Spring автоматически отображает параметры запроса GET для POJO
У меня есть метод в моем контроллере 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;
}
Мне нужно что-то подобное, мы можем использовать @RequestBody в REST Controller.
Можно ли сделать в Spring 3.x?
Спасибо!
Ответы
Ответ 1
Возможно и просто, убедитесь, что у вашего боба есть подходящие средства доступа к полям. Вы можете добавить правильную проверку для каждого свойства, просто убедитесь, что у вас есть правильные банки на месте. С точки зрения кода это было бы что-то вроде
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
Ответ 2
Вы пытаетесь сделать
@RequestMapping(value = "/getItem", method = RequestMethod.GET)
public ServiceRequest<List<SomeModel>> getClaimStatuses(@ModelAttribute RequestParamsModel requestParamModel) {
...
}