Spring 春季EL-“;表达式“中还有更多数据”;

Spring 春季EL-“;表达式“中还有更多数据”;,spring,spring-el,Spring,Spring El,是否可以解析如下所示的表达式,其中我调用了一个方法,并且希望在该方法调用的结果之后有文本 String expression = "obj.someMethod()'test'"; ExpressionParser parser = new SpelExpressionParser(); Expression expression = parser.parseExpression(expression); 当我运行下面这样的代码时,会出现以下错误: org.springframework.e

是否可以解析如下所示的表达式,其中我调用了一个方法,并且希望在该方法调用的结果之后有文本

String expression = "obj.someMethod()'test'";
ExpressionParser parser = new SpelExpressionParser(); 
Expression expression = parser.parseExpression(expression);
当我运行下面这样的代码时,会出现以下错误:

org.springframework.expression.spel.spelparsexception:EL1041E:(位置23):解析有效表达式后,表达式中还有更多数据:“test”


如果我删除
'test'
字符串,那么它将正确解析和计算。

即使是表达式语言,它也基于核心编程语言并遵循其规则

因此,如果在Java中使用
+
运算符将方法结果与字符串连接在一起,那么在SpEL中也应该这样做:

"obj.someMethod() + 'test'"
这是你的正确答案

您还可以使用:

"obj.someMethod().concat('test')"

如果
someMethod()
返回
String
,当然。

?你的意思可能是“obj.someMethod('test')”?不,我的意思是它的外观。我希望执行的方法和它的返回值本质上与“test”连接在一起。最初,我尝试使用
{}
来包围方法调用,但这不起作用。然后,我猜您想要
obj.someMethod()+'test'
嗯……考虑到它是一个表达式,我想这是有意义的。我的印象是EL解析器会让字符串按原样用单引号括起来,然后对所有其他字符串进行求值,但听起来这是不正确的。