web-dev-qa-db-ja.com

SpELは有効な式を解析していますが、式にはまだ多くのデータがあります

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)
10
Udhay

試す

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

代わりに。

パラメータは文字列ですが、他のものも解析できるため、パーサーはこれが文字列であることを認識する必要があります。

詳細については、こちらをご覧ください here

13
Zaheylu

それをSpring BeanのXMLファイルに入れている場合は、次のように入れてみてください

#{'Hello Spel'}.
1
Shubh

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"/>

私のこれはあなたがあなたの問題を解決するのを助けます、

この問題の詳細については、この問題を 参照 してください。

0

これを試して

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