在@RequestParam中绑定列表

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

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){
    ....
}

但是它们都没有绑定myParams。即使我向映射添加值,它也无法绑定参数:

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

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

谢谢


答案 1

或者你可以这样做:

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

例如,这适用于这样的表单:

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

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


答案 2

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

myparam=myValue1&myparam=myValue2&myparam=myValue3

如果你需要绑定-style索引参数,我想你无论如何都需要。@ModelAttribute@ModelAttribute


推荐