我正在使用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)
答案 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。