gpt4 book ai didi

java - 如何在Spring String中转义 ","(逗号)到数组或List转换

转载 作者:搜寻专家 更新时间:2023-11-01 03:52:03 25 4
gpt4 key购买 nike

我们有一个 Spring 绑定(bind),它使用 Spring 提供的默认转换器将字符串转换为 List

例如,如果我们从表单中推送了 a, b, c,那么 Controller 会得到一个包含以下元素的 List:

  1. 一个
  2. b
  3. c

我们不必在代码中做任何特殊的事情。

我在处理数据中的逗号时遇到问题。如果我在这里提交 a, x,z, b , c x,z 实际上是一个字符串,但是 Spring 转换器不知道并假定它是一个分隔符并像这样组成 List:

  1. 一个
  2. x
  3. b
  4. c

现在我来回答我的问题:

  1. 提交表单时,我可以在数据中转义 ,(逗号)吗?
  2. 如果我必须注册自定义转换器,是否会影响特定数据字符转义的默认行为?
  3. 我可以控制转换器的顺序吗?
  4. 我如何告诉我的转换器单独提取此类数据?
  5. 如果我必须创建一个自定义转换器,我是否可以使用自定义注释来说明我的转换器应该仅适用于获得我的注释的字段?

最佳答案

我认为实际上没有办法在由 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com