java SpEL解析有效表达式,表达式中仍有更多数据

nom7f22z  于 2022-10-30  发布在  Java
关注(0)|答案(6)|浏览(435)

我使用Spring表达式语言(SpEL)创建了一个示例程序。

ExpressionParser parser=new SpelExpressionParser();
Expression expression=parser.parseExpression("Hello SPEL");

但是下面得到了错误。

Exception in thread "main" org.springframework.expression.spel.SpelParseException: EL1041E:(pos 6): After parsing a valid expression, there is still more data in the expression: 'SPEL'
    at org.springframework.expression.spel.standard.InternalSpelExpressionParser.doParseExpression(InternalSpelExpressionParser.java:116)
    at org.springframework.expression.spel.standard.SpelExpressionParser.doParseExpression(SpelExpressionParser.java:56)
    at org.springframework.expression.spel.standard.SpelExpressionParser.doParseExpression(SpelExpressionParser.java:1)
    at org.springframework.expression.common.TemplateAwareExpressionParser.parseExpression(TemplateAwareExpressionParser.java:66)
    at org.springframework.expression.common.TemplateAwareExpressionParser.parseExpression(TemplateAwareExpressionParser.java:56)
ggazkfy8

ggazkfy81#

尝试

Expression expression=parser.parseExpression("'Hello SPEL'");

得双曲余切值.
参数是一个String,但是解析器需要知道这是一个字符串,因为您还可以解析其他内容。
有关更多信息,请查看here

iibxawm4

iibxawm42#

试试这个

Expression expression=parser.parseExpression("'Hello SPRING'");
5gfr0r5j

5gfr0r5j3#

在使用xml文件注入bean时,我遇到了同样的异常:

<bean id="myBean"
          class="mypackage.mybean"
          destroy-method="destroy"
          p:filePath=
                  "#{systemProperties'java.io.tmpdir'}#{systemProperties'file.separator'}somefile.txt"/>

当使用以下命令时,问题消失:[]

<bean id="myBean"
          class="mypackage.mybean"
          destroy-method="destroy"
          p:filePath=
                  "#{systemProperties['java.io.tmpdir']}#{systemProperties['file.separator']}somefile.txt"/>

我的这个帮你解决你的问题,
有关此问题详细信息,请参阅此问题的refer

ryhaxcpt

ryhaxcpt4#

如果您要将其放入springbeansxml文件中,请尝试如下所示


# {'Hello Spel'}.
laik7k3q

laik7k3q5#

我使用的是Spring Web流,从ognl迁移到了Spring 5 WebFlowSpringELExpressionParser,并将@package.class.method()替换为bean.method(),而bean是在servlet.xml中声明的。

wribegjk

wribegjk6#

我得到了这个:
http://...
最后我发现在最新版本的SpringBoot配置文件中,值,已经被转换成了Map,所以旧版本的URL值现在是一个名称/值对,用冒号分隔在http://...中。

应用程序.yml中的旧值

my:
    connection:
        url:http://www.example.com

新值

my:
    connection:
        url: "{
            url1: 'http://www.example.com',
            url1: 'http://www.example.com',
            url1: 'http://www.example.com'
        }"

错误消息的解决方案是使用Map更新到配置文件。这给了代码它想要的。

相关问题