我们有一个Spring绑定,它使用Spring提供的默认转换器将字符串转换为List
。
例如,如果我们从表单中推出a, b, c
,则控制器会获得带有元素的List
:
我们不需要在代码中做任何特别的事情。
我在处理数据中的逗号时遇到问题。如果我在这里提交a, x,z, b , c
x,z
实际上是一个字符串,但是Spring转换器不知道它并假设它是一个分隔符并组成List
这样:< / p>
现在我来问我的问题:
,
(逗号)吗?答案 0 :(得分:0)
您是否尝试过引用这样的条目?
“a”,“x,z”,“b”,“c”
答案 1 :(得分:0)
我认为,实际上在Spring属性中没有办法转义逗号,而这些属性在Spring之前已转换为列表/数组(例如,借助于ConfigurationProperties
类或类似的属性)。
也许使用SpEL或其他方法有一些晦涩的方法,但我发现以“索引”表示法指定列表属性更加容易(不确定如何正确调用)。
您的示例这样翻译
# results in ["a", "x", "z", "b", "c"]
some.property.list=a, x,z, b, c
# results in ["a", "x,z", "b", "c"]
some.property.list[0]=a
some.property.list[1]=x,z
some.property.list[2]=b
some.property.list[3]=c
但是,明显的缺点是您需要手动维护索引。但是通常,在这样一个可配置的列表中,您的条目数量有限(至少从我迄今为止的经验来看)。
另一种方法当然是切换到YAML配置而不是属性:
some:
property:
list:
- "a"
- "x,z"
- "b"
- "c"