【发布时间】:2020-11-06 01:01:58
【问题描述】:
我有一个可以接受几十个请求参数的端点。在数据类中收集所有这些参数会很好。此外,请求参数必须用逗号分隔
path?param=1,2
保持向后兼容性。
假设我们有这个端点:
@GetMapping("path")
fun someFun(@RequestParam param: Set<Int> = emptySet()
...other 11 params
)
我创建了一个数据类来收集所有请求参数:
data class ClusteredParams(val param: Set<Int> = emptySet()
...other 11 params
)
所以端点如下所示:
@GetMapping("path")
fun someFun(param: ClusteredParams)
当我打电话给path?param=1,2 时,我得到了:
"error": "无法将 java.lang.String[] 类型的值转换为所需类型 java.util.Set;嵌套异常是 java.lang.NumberFormatException: 对于输入字符串:"1,2"", “字段”:“参数”, "rejectedValue": "1,2"
当我打电话给path?param=1&param=2 时,一切都很好。 用Java编写ClusteredParams类时不存在此问题。
public class ClusteredParams {
private Set<Int> param;
...other 11 params
getters and setters
}
【问题讨论】:
-
ClusteredParams 在 Java 中是什么样子的?
-
尝试用括号括起来。
path?param=[1,2] -
试试
param=1&param=2 -
你们看帖子了吗?他需要实现的是 path?param=1,2 因为这在 Java 中是可能的。
-
@SimonMartinelli 我添加了代码示例
标签: spring-boot kotlin