java - URL中的编码逗号在Spring中被读取为List

标签 java spring spring-mvc url

我在 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/

相关文章:

java - Spring MVC 与 Spring Webflow

java - 如何使用 Spring Security 模拟身份验证和授权

java - 在 Spring Boot 应用程序的应用程序属性文件中使用 Jenkins 变量

spring - 为什么异常处理程序没有在 Spring MVC 中捕获错误

java - 抑制玩家命令的控制台输出

java - 使用 ApplicationContext 但不使用 XmlBeanFactory

spring-mvc - Spring Boot REST Controller POST 请求处理

java - 2 session对象java ee null异常

Java将GIF图片转PNG格式

java - 在Java中显示最小的数字