作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我们有一个 Spring 绑定(bind),它使用 Spring 提供的默认转换器将字符串转换为 List
。
例如,如果我们从表单中推送了 a, b, c
,那么 Controller 会得到一个包含以下元素的 List
:
我们不必在代码中做任何特殊的事情。
我在处理数据中的逗号时遇到问题。如果我在这里提交 a, x,z, b , c
x,z
实际上是一个字符串,但是 Spring 转换器不知道并假定它是一个分隔符并像这样组成 List
:
现在我来回答我的问题:
,
(逗号)吗?最佳答案
我认为实际上没有办法在由 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"
关于java - 如何在Spring String中转义 ","(逗号)到数组或List转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23691792/
我是一名优秀的程序员,十分优秀!