一尘不染

绑定@RequestParam中的列表

spring

我以这种方式从表单发送一些参数:

myparam[0] : ‘myValue1’
myparam[1] : ‘myValue2’
myparam[2] : ‘myValue3’
otherParam : ‘otherValue’
anotherParam : ‘anotherValue’

我知道我可以通过添加类似的参数来获取控制器方法中的所有参数

public String controllerMethod(@RequestParam Map<String, String> params){
    ....
}

我想将参数myParam [](而不是其他参数)绑定到列表或数组(任何保持索引顺序的东西),因此我尝试使用以下语法:

public String controllerMethod(@RequestParam(value="myParam") List<String> myParams){
    ....
}

public String controllerMethod(@RequestParam(value="myParam") String[] myParams){
    ....
}

但是它们都没有绑定myParam。即使将值添加到地图,它也无法绑定参数:

public String controllerMethod(@RequestParam(value="myParam") Map<String, String> params){
    ....
}

是否有任何语法可以将某些参数绑定到列表或数组,而不必将对象创建为带有列表属性的@ModelAttribute?

谢谢


阅读 504

收藏
2020-04-12

共2个答案

一尘不染

中的数组@RequestParam用于绑定多个相同名称的参数:

myparam=myValue1&myparam=myValue2&myparam=myValue3

如果你需要绑定@ModelAttribute样式索引的参数,我想你@ModelAttribute还是需要。

2020-04-12
一尘不染

或者,你可以那样做:

public String controllerMethod(@RequestParam(value="myParam[]") String[] myParams){
    ....
}

例如,对于这样的表单,它可以工作:

<input type="checkbox" name="myParam[]" value="myVal1" />
<input type="checkbox" name="myParam[]" value="myVal2" />

这是最简单的解决方案:)

2020-04-12