表达式-表达式中还有更多内容

时间:2018-09-27 10:58:40

标签: java spring spring-el

我正在使用SPEL表达式,并且在我的应用程序启动时遇到此错误。

ftpOutboundGateway.setRenameExpressionString("'/processed/headers['file_remoteFile']'");

得到以下异常:

EL1041E: After parsing a valid expression, there is still more data in the expression: 'file_remoteFile'

我在这里做错了什么?任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:1)

请注意,您使用了4个'字符。 " ... "用于将String传递给Java的方法。 "' ... '"定义所传递的参数也应被识别为String本身。字符串中的每个附加'字符必须用两个''进行转义。以下代码应该可以正常工作(未经测试,但是被捕获了):

ftpOutboundGateway.setRenameExpressionString("'/processed/headers[''file_remoteFile'']'");

摘自Spring框架文档4.3.1. Literal Expressions

  

支持的文字表达式的类型为字符串,数值(int,实数,十六进制),布尔值和null。字符串由单引号引起来。要将单引号本身放在字符串中,请使用两个单引号字符。

答案 1 :(得分:0)

您需要'/processed/' + headers[file_remoteFile]