有了这个http://myserver/find-by-phones?phone=123&phone=345
请求,是否可以处理这样的事情:
@Controller
public class Controller{
@RequestMapping("/find-by-phones")
public String find(List<String> phones){
...
}
}
Spring MVC能否将多值param phones
转换为String
s列表(或其他对象?
感谢。
亚历
答案 0 :(得分:68)
@RequestParam
中的“数组”用于绑定多个相同名称的参数:
phone=val1&phone=val2&phone=val3
-
public String method(@RequestParam(value="phone") String[] phoneArray){
....
}
然后,您可以使用Arrays.asList(..)
方法
EDIT1:
根据emdadul的建议,最新版本的弹簧也可以如下所示:
public String method(@RequestParam(value="phone", required=false) List<String> phones){
....
}
答案 1 :(得分:6)
Spring可以将查询参数直接转换为List
甚至是Set
例如:
@RequestParam(value = "phone", required = false) List<String> phones
或
@RequestParam(value = "phone", required = false) Set<String> phones
答案 2 :(得分:0)
我对索引查询字符串有问题,例如
http://myserver/find-by-phones?phone[0]=123&phone[1]=345
,并且只能使用
http://myserver/find-by-phones?phone[0]=123&phone[1]=345
为我工作。 List或String []都没有正确处理它。
我也尝试过
MultiValueMap<String, String>
,但是RequestParamMethodArgumentResolver明确寻找MultiValueMap<String, String>
忽略索引。这就是为什么我决定让RequestParamMapMethodArgumentResolver处理它的原因。