将GET请求参数自动映射到POJO [英] Spring map GET request parameters to POJO automatically

查看:874
本文介绍了将GET请求参数自动映射到POJO的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的REST控制器中有一个包含很多参数的方法.例如:

I have method in my REST controller that contains a lot of parameters. For example:

@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对象,例如:

and I would like to map all GET request parameters to a POJO object like:

public class RequestParamsModel {

   public RequestParamsModel() {

   }

   public List<String> param1;
   public String param2;
   public List<String> param3;
   public String param4;
   public String param5;
}

我需要类似的方法,就像我们可以在REST Controller中使用@RequestBody一样.

I need something like we can do using @RequestBody in REST Controller.

在Spring 3.x中可以吗?

谢谢!

推荐答案

可能且容易,请确保您的bean对这些字段具有正确的访问器.您可以为每个属性添加适当的验证,只需确保已安装适当的jar即可.就代码而言,就像

Possible and easy, make sure that your bean has proper accessors for the fields. You can add proper validation per property, just make sure that you have the proper jars in place. In terms of code it would be something like

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&param2=ok

这篇关于将GET请求参数自动映射到POJO的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆