【问题标题】:SpEL parsing a valid expression, there is still more data in expressionSpEL解析有效表达式,表达式中还有更多数据
【发布时间】:2015-04-09 09:36:58
【问题描述】:

我正在使用 Spring 表达式语言 (SpEL) 并创建了一个示例程序。代码sn-p是

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)

【问题讨论】:

    标签: java spring spring-el


    【解决方案1】:

    试试

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

    相反。

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

    欲了解更多信息,请查看here

    【讨论】:

      【解决方案2】:

      试试这个

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

      【讨论】:

        【解决方案3】:

        在使用 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这个问题:

        【讨论】:

        • 由于您不确定这是否有助于 OP,这并不是一个答案。答案的唯一目的是解决这个明确的 OP 问题。并且已经有一个赞成的答案。
        • 我的问题与它非常相似,赞成的答案意味着正确的答案?
        • 首先,如果您的问题只是类似,那么这个答案就不在正确的位置。答案外壳仅明确回答 OP 提到的这个问题。一个赞成的答案并不是绝对正确的答案,但由于没有 cmets 或任何其他的答案,这意味着 OP 对他的问题没有采取行动,这就是为什么没有 已接受的答案标志 (这只是一个猜测)。但是你可以相信,特别是因为这是唯一有投票的答案,这个答案质量很高,解决了 OP 的问题。
        【解决方案4】:

        如果你把它放在你的 spring beans xml 文件中,试着像这样放它

        #{'Hello Spel'}.
        

        【讨论】:

          【解决方案5】:

          我正在使用 Spring Web 流并从 ognl 移至 Spring 5 WebFlowSpringELExpressionParser 并将 @package.class.method() 替换为 bean.method() 并且 bean 在 servlet.xml 中声明。

          【讨论】:

            猜你喜欢
            • 2021-11-18
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2017-07-20
            • 1970-01-01
            相关资源
            最近更新 更多