我以这种方式从表单发送一些参数:
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?
谢谢
中的数组@RequestParam用于绑定多个相同名称的参数:
@RequestParam
myparam=myValue1&myparam=myValue2&myparam=myValue3
如果你需要绑定@ModelAttribute样式索引的参数,我想你@ModelAttribute还是需要。
@ModelAttribute
或者,你可以那样做:
public String controllerMethod(@RequestParam(value="myParam[]") String[] myParams){ .... }
例如,对于这样的表单,它可以工作:
<input type="checkbox" name="myParam[]" value="myVal1" /> <input type="checkbox" name="myParam[]" value="myVal2" />
这是最简单的解决方案:)