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

时间:2015-04-09 09:36:59

标签: java spring spring-el

我正在使用Spring Expression Language(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)

5 个答案:

答案 0 :(得分:12)

尝试

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

代替。

参数是一个String,但解析器需要知道这是一个字符串,因为你也可以解析其他东西。

有关详细信息,请查看here

答案 1 :(得分:1)

如果你把它放在你的spring bean xml文件中,试试把它放在这个

#{'Hello Spel'}.

答案 2 :(得分:0)

试试这个

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

答案 3 :(得分:0)

在使用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解决此问题:

答案 4 :(得分:0)

我正在使用Spring web flow,并将其从ognl移到Spring 5 WebFlowSpringELExpressionParser,并用bean.method()替换了@ package.class.method(),并且在servlet.xml中声明了bean。