【发布时间】:2020-10-02 15:09:56
【问题描述】:
我正在尝试使用 SPeL 解析字符串列表的列表。 参数是使用命令行参数而不是 .properties 文件指定的。当我不在字符串文字中使用空格字符时,一切正常,但是当我这样做时,我得到一个解析异常。
编辑:我正在使用 Spring Boot 2.2.9.RELEASE
带有@Value注解的列表:
@Value("#{${param}}")
private List<List<String>> param;
指定为命令行参数的属性,不起作用:
--param={{'With Space','b'},{'x','y'}}
导致异常:
Caused by: org.springframework.expression.ParseException: Expression [#{{{'With}] @4: Found non terminating string literal starting at position 4
这确实有效:
--param={{'WithoutSpace','b'},{'x','y'}}
有没有办法用包含空格字符的字符串元素来解析这样的列表?
【问题讨论】:
-
什么版本的 Spring?我刚刚复制/粘贴了您的代码/参数,它适用于 Spring 5.2.9。
[[With Space, b], [x, y]]. -
Spring Boot 2.2.9.RELEASE
-
我刚刚将我的应用更改为使用 2.2.9 而不是 2.3.4; 2.2.9 使用 spring-expression 5.2.8 对我来说仍然可以正常工作;也许你可以发布一个完整的(小)应用程序来展示这种行为,这样我就可以看到哪里出了问题。
-
我知道出了什么问题,似乎只有当您使用命令行参数
--param={{'With Space','b'},{'x','y'}}指定它时才会发生这种情况,但是当您在 .properties 文件中指定它时它确实可以正常工作。刚刚更新了这个问题。