Spring MVC可以处理多值查询参数吗?

Ale*_*exV 44 spring-mvc

有了这个http://myserver/find-by-phones?phone=123&phone=345请求,是否可以处理这样的事情:

@Controller
public class Controller{
    @RequestMapping("/find-by-phones")
    public String find(List<String> phones){
       ...
    }
}
Run Code Online (Sandbox Code Playgroud)

Spring MVC可以将多值param转换phonesStrings(或其他对象)列表吗?

谢谢.

亚历克斯

fmu*_*car 76

"Arrays"in @RequestParam用于绑定同名的几个参数:

phone=val1&phone=val2&phone=val3
Run Code Online (Sandbox Code Playgroud)

-

public String method(@RequestParam(value="phone") String[] phoneArray){
    ....
}
Run Code Online (Sandbox Code Playgroud)

然后,您可以使用Arrays.asList(..)方法将其转换为列表

EDIT1:

正如emdadul所建议的那样,最新版本的spring也可以像下面那样:

public String method(@RequestParam(value="phone", required=false) List<String> phones){
    ....
}
Run Code Online (Sandbox Code Playgroud)

  • Spring可以将值直接放入列表:`@RequestParam(value ="phone")List <String> phones`.不确定是否/何时更改,但它在Spring 3.0.5中有效. (26认同)
  • 怎么样的元素名称将是电话[]或电话或电话[0],电话[1] .....?每个问题我有25个mcq问题和4个单选按钮. (2认同)

Mar*_*unt 8

Spring可以将查询参数直接转换为a List或甚至aSet

例如:

 @RequestParam(value = "phone", required = false) List<String> phones
Run Code Online (Sandbox Code Playgroud)

要么

 @RequestParam(value = "phone", required = false) Set<String> phones
Run Code Online (Sandbox Code Playgroud)