zoukankan      html  css  js  c++  java
  • EL1041E: After parsing a valid expression, there is still more data in the expression

    在使用Spring Cloud Gateway的时候,路由信息是根据DiscoveryClient自动生成的,现在要给自动生成的路由信息统一添加Predicate和Filter。配置如下所示:
    application.yml

    spring: 
      cloud: 
        gateway: 
          discovery:
            locator:
              enabled: true
              predicates:
              - name: Path
                args:
                  pattern: "'/'+serviceId+'/test'"
              filters: 
              - name: RedirectTo
                args:
                  status: 301
                  url: http://www.xinyues.com
    

    这个时候,网关服务启动是没有问题的,但是在浏览器中输入获取所有路由信息时,报下面的异常:

    2019-10-26 16:40:40 ERROR org.springframework.core.log.CompositeLog.error(CompositeLog.java:117) - [d04837fc] 500 Server Error for HTTP GET "/actuator/gateway/routes" org.springframework.expression.sp
    el.SpelParseException: EL1041E: After parsing a valid expression, there is still more data in the expression: 'colon(:)'
    	at org.springframework.expression.spel.standard.InternalSpelExpressionParser.doParseExpression(InternalSpelExpressionParser.java:135) ~[spring-expression-5.1.5.RELEASE.jar:5.1.5.RELEASE]
    	at org.springframework.expression.spel.standard.SpelExpressionParser.doParseExpression(SpelExpressionParser.java:61) ~[spring-expression-5.1.5.RELEASE.jar:5.1.5.RELEASE]
    	at org.springframework.expression.spel.standard.SpelExpressionParser.doParseExpression(SpelExpressionParser.java:33) ~[spring-expression-5.1.5.RELEASE.jar:5.1.5.RELEASE]
    	at org.springframework.expression.common.TemplateAwareExpressionParser.parseExpression(TemplateAwareExpressionParser.java:52) ~[spring-expression-5.1.5.RELEASE.jar:5.1.5.RELEASE]
    	at org.springframework.expression.common.TemplateAwareExpressionParser.parseExpression(TemplateAwareExpressionParser.java:43) ~[spring-expression-5.1.5.RELEASE.jar:5.1.5.RELEASE]
    	at org.springframework.cloud.gateway.discovery.DiscoveryClientRouteDefinitionLocator.getValueFromExpr(DiscoveryClientRouteDefinitionLocator.java:129) ~[spring-cloud-gateway-core-2.1.0.RELEASE.jar:2.1
    .0.RELEASE]
    	at org.springframework.cloud.gateway.discovery.DiscoveryClientRouteDefinitionLocator.lambda$getRouteDefinitions$4(DiscoveryClientRouteDefinitionLocator.java:117) ~[spring-cloud-gateway-core-2.1.0.REL
    EASE.jar:2.1.0.RELEASE]
    	at reactor.core.publisher.FluxMapFuseable$MapFuseableSubscriber.onNext(FluxMapFuseable.java:107) [reactor-core-3.2.6.RELEASE.jar:3.2.6.RELEASE]
    	at reactor.core.publisher.FluxFilterFuseable$FilterFuseableSubscriber.tryOnNext(FluxFilterFuseable.java:143) [reactor-core-3.2.6.RELEASE.jar:3.2.6.RELEASE]
    	at reactor.core.publisher.FluxMapFuseable$MapFuseableConditionalSubscriber.tryOnNext(FluxMapFuseable.java:303) [reactor-core-3.2.6.RELEASE.jar:3.2.6.RELEASE]
    	at reactor.core.publisher.FluxFilterFuseable$FilterFuseableConditionalSubscriber.tryOnNext(FluxFilterFuseable.java:361) [reactor-core-3.2.6.RELEASE.jar:3.2.6.RELEASE]
    	at reactor.core.publisher.FluxMapFuseable$MapFuseableConditionalSubscriber.tryOnNext(FluxMapFuseable.java:303) [reactor-core-3.2.6.RELEASE.jar:3.2.6.RELEASE]
    	at reactor.core.publisher.FluxIterable$IterableSubscriptionConditional.slowPath(FluxIterable.java:515) [reactor-core-3.2.6.RELEASE.jar:3.2.6.RELEASE]
    	at reactor.core.publisher.FluxIterable$IterableSubscriptionConditional.request(FluxIterable.java:473) [reactor-core-3.2.6.RELEASE.jar:3.2.6.RELEASE]
    	at reactor.core.publisher.FluxMapFuseable$MapFuseableConditionalSubscriber.request(FluxMapFuseable.java:346) [reactor-core-3.2.6.RELEASE.jar:3.2.6.RELEASE]
    	at reactor.core.publisher.FluxFilterFuseable$FilterFuseableConditionalSubscriber.request(FluxFilterFuseable.java:404) [reactor-core-3.2.6.RELEASE.jar:3.2.6.RELEASE]
    	at reactor.core.publisher.FluxMapFuseable$MapFuseableConditionalSubscriber.request(FluxMapFuseable.java:346) [reactor-core-3.2.6.RELEASE.jar:3.2.6.RELEASE]
    	at reactor.core.publisher.FluxFilterFuseable$FilterFuseableSubscriber.request(FluxFilterFuseable.java:185) [reactor-core-3.2.6.RELEASE.jar:3.2.6.RELEASE]
    	at reactor.core.publisher.FluxMapFuseable$MapFuseableSubscriber.request(FluxMapFuseable.java:162) [reactor-core-3.2.6.RELEASE.jar:3.2.6.RELEASE]
    	at reactor.core.publisher.FluxFlatMap$FlatMapInner.onSubscribe(FluxFlatMap.java:933) [reactor-core-3.2.6.RELEASE.jar:3.2.6.RELEASE]
    	at reactor.core.publisher.FluxMapFuseable$MapFuseableSubscriber.onSubscribe(FluxMapFuseable.java:90) [reactor-core-3.2.6.RELEASE.jar:3.2.6.RELEASE]
    	at reactor.core.publisher.FluxFilterFuseable$FilterFuseableSubscriber.onSubscribe(FluxFilterFuseable.java:82) [reactor-core-3.2.6.RELEASE.jar:3.2.6.RELEASE]
    	at reactor.core.publisher.FluxMapFuseable$MapFuseableConditionalSubscriber.onSubscribe(FluxMapFuseable.java:255) [reactor-core-3.2.6.RELEASE.jar:3.2.6.RELEASE]
    	at reactor.core.publisher.FluxFilterFuseable$FilterFuseableConditionalSubscriber.onSubscribe(FluxFilterFuseable.java:299) [reactor-core-3.2.6.RELEASE.jar:3.2.6.RELEASE]
    	at reactor.core.publisher.FluxMapFuseable$MapFuseableConditionalSubscriber.onSubscribe(FluxMapFuseable.java:255) [reactor-core-3.2.6.RELEASE.jar:3.2.6.RELEASE]
    	at reactor.core.publisher.FluxIterable.subscribe(FluxIterable.java:135) [reactor-core-3.2.6.RELEASE.jar:3.2.6.RELEASE]
    
    


    欧莱雅男士锐能抗初老护肤套装(元气露+多效霜+眼霜+洁面膏50ml2+面膜10) 视黄醇紧致 洗面奶男

    根据异常信息,可以定位到是url: http://www.xinyues.com配置错误。因为这里配置的信息是需要Spel解析的,如果像上面那样直接配置,会按照Spel语法解析,我们需要的是一个纯字符串值,应该这样配置:url: "'http://www.xinyues.com'"

  • 相关阅读:
    在面试中如何展示虚拟机和内存调优技能
    n年前,我没钱但年轻,我怕n年后我老时,还是一无所成——2017我的收获和反思
    如何在缺乏商业项目经验的前提下成功通过面试,兼说我如何甄别非商业项目经验
    从循环条件的代码里,我能在面试中甄别程序员是否是高级
    泛型的继承和通配符,同时归纳集合部分的面试点
    我短期内不会再到实体书店买书了,同时分析各种获取知识的方法
    分享升级架构师路上的体会,兼说我为什么有挣钱紧迫感
    累和加班多没时间都不是理由,再不挣钱就老啦
    对java多线程里Synchronized的思考
    工作2年进外企,不是难事,给出进外企的建议
  • 原文地址:https://www.cnblogs.com/wgslucky/p/11743740.html
Copyright © 2011-2022 走看看