Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring映射自动获取POJO的请求参数_Java_Spring_Spring Mvc - Fatal编程技术网

Java Spring映射自动获取POJO的请求参数

Java Spring映射自动获取POJO的请求参数,java,spring,spring-mvc,Java,Spring,Spring Mvc,我的REST控制器中有一个包含很多参数的方法。例如: @RequestMapping(value = "/getItem", method = RequestMethod.GET) public ServiceRequest<List<SomeModel>> getClaimStatuses( @RequestParam(value = "param1", required = true) List<String> param1,

我的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) {
    // ......
}
@RequestMapping(value=“/getItem”,method=RequestMethod.GET)
公共服务请求GetClaimStatus(
@RequestParam(value=“param1”,required=true)列表param1,
@RequestParam(value=“param2”,required=false)字符串param2,
@RequestParam(value=“param3”,required=false)列表param3,
@RequestParam(value=“param4”,required=false)列表param4,
@RequestParam(value=“param5”,required=false)列表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;
}
公共类RequestParamsModel{
公共请求参数模型(){
}
公开名单参数1;
公共字符串参数2;
公开名单3;
公共字符串参数4;
公共字符串参数5;
}
我需要一些我们可以在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;
    }
    //  ...
}
你想做什么

@RequestMapping(value = "/getItem", method = RequestMethod.GET)
public ServiceRequest<List<SomeModel>> getClaimStatuses(@ModelAttribute RequestParamsModel requestParamModel) {
...
}
@RequestMapping(value=“/getItem”,method=RequestMethod.GET)
公共服务请求GetClaimStatus(@ModelAttribute RequestParamsModel requestParamModel){
...
}

是。我有空的模型。据我所知,ModelAttribute用于响应模型。它可以与ModelAttribute注释一起使用,也可以不使用,但RequestParamsModel必须包含setter方法。谢谢NotNull注释的包是什么?它的
javax.validation.constraints.NotNull
线程可能已经死了,但我有一个问题。如果我们没有在这里使用@RequestParam注释,spring如何知道将请求参数映射到类,在本例中是RequestParamsModel?@Kalyan不确定,但我猜它是按照约定工作的
/getItem?param1=list1,list2&param2=ok
@RequestMapping(value = "/getItem", method = RequestMethod.GET)
public ServiceRequest<List<SomeModel>> getClaimStatuses(@ModelAttribute RequestParamsModel requestParamModel) {
...
}