![](/img/trans.png)
[英]Spring - how to map request parameters in the URL to a POJO at run time?
[英]Spring map GET request parameters to POJO automatically
我的REST控制器中有一些方法,它包含很多参数。 例如:
@RequestMapping(value = "/getItem", method = RequestMethod.GET)
public ServiceRequest<List<SomeModel>> getClaimStatuses(
@RequestParam(value = "param1", required = true) List<String> param1,
@RequestParam(value = "param2", required = false) String param2,
@RequestParam(value = "param3", required = false) List<String> param3,
@RequestParam(value = "param4", required = false) List<String> param4,
@RequestParam(value = "param5", required = false) List<String> param5) {
// ......
}
我想将所有GET请求参数映射到POJO对象,如:
public class RequestParamsModel {
public RequestParamsModel() {
}
public List<String> param1;
public String param2;
public List<String> param3;
public String param4;
public String param5;
}
我需要在REST控制器中使用@RequestBody这样的东西。
在Spring 3.x中可以做到吗?
谢谢!
可能且简单,确保您的bean具有适当的字段访问权限。 您可以为每个属性添加适当的验证,只需确保您有适当的jar。 在代码方面它会是这样的
import javax.validation.constraints.NotNull;
public class RequestParamsModel {
public RequestParamsModel() {}
private List<String> param1;
private String param2;
private List<String> param3;
private String param4;
private String param5;
@NotNull
public List<String> getParam1() {
return param1;
}
// ...
}
控制器方法是:
import javax.validation.Valid;
@RequestMapping(value = "/getItem", method = RequestMethod.GET)
public ServiceRequest<List<SomeModel>> getClaimStatuses(@Valid RequestParamsModel model) {
// ...
}
请求,例如:
/getItem?param1=list1,list2¶m2=ok
你想做吗?
@RequestMapping(value = "/getItem", method = RequestMethod.GET)
public ServiceRequest<List<SomeModel>> getClaimStatuses(@ModelAttribute RequestParamsModel requestParamModel) {
...
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.