我在 Spring 中有一个 REST 组件。简化后,它看起来像这样:
@RequestMapping(value = "/route", method = RequestMethod.GET)
public Object thisIsTheMethod(@RequestParam(value = "value", required = false) List<String> values) {
return OtherClass.doTheThing(values);
}
这用于使用任意长度的字符串列表。您可以通过多种方式做到这一点:
localhost:8080/route?value=this&value=that
或者
localhost:8080/route?value=this,that
现在假设我想传入一个包含逗号的字符串:value,1
。我该怎么做呢?将逗号替换为 %2C 会生成 2 个值的列表(“value”、“1”)。将任何内容放在引号中或转义引号中都有类似的问题。当我有多个参数并使用多值模式时,它看起来好像有效,但当我使用逗号分隔模式时则不起作用。
最佳答案
您可以设置分隔符
。当未设置时,逗号只是 org.springframework.boot.convert.DelimitedStringToCollectionConverter 中使用的默认逗号。如果您愿意,您可以完全禁用Delimiter
。对于您的代码,它看起来像这样:
import org.springframework.boot.convert.Delimiter;
@RequestMapping(value = "/route", method = RequestMethod.GET)
public Object thisIsTheMethod(@Delimiter(Delimiter.None) @RequestParam(value = "value", required = false) List<String> values) {
return OtherClass.doTheThing(values);
}
关于java - URL中的编码逗号在Spring中被读取为List,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37058691/