当前位置: 首页 > 知识库问答 >
问题:

Spring map自动向POJO获取请求参数

隗轶
2023-03-14
@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的东西。

有可能在Spring3.x做吗?

谢了!

共有1个答案

田成仁
2023-03-14

确保您的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&param2=ok
 类似资料:
  • 主要内容:通过 HttpServletRequest 获取请求参数,通过形参获取请求参数,使用 @RequestParam 注解获取,通过实体类对象获取(推荐),解决获取请求参数的乱码问题Spring MVC 提供了多种获取请求参数的方式: 通过 HttpServletRequest 获取请求参数 通过控制器方法的形参获取请求参数 使用 @RequestParam 注解获取请求参数 通过实体类对象获取请求参数(推荐) 下面我们就对这些获取请求参数的方式一一进行介绍。 通过 HttpServlet

  • 问题内容: 如何在Jinja2模板中检索请求参数? 问题答案: 我对这个答案有些迟,但是其他解决方案并不能真正解决你使用Flask的问题。 将Flask与Jinja2一起使用的事实使你的情况与其他框架有所不同。Flask实际上使所有Jinja2模板中都可以使用一些全局变量,而无需你将它们显式传递给模板。 在http://flask.pocoo.org/docs/templating/#standa

  • 问题内容: 我有一个组件。在其中,我在组件中有一个页面。我要访问的值从页面(一个inputText的或单选按钮的)在我的管理bean类。请指导我如何去做。请在这里注意,我不想在这里使用会话。我只需要请求。我尝试了以下选项,但它们对我没有用。 选项一 选项二 选项三 选项四 选项五 我希望该值不在jsp的托管bean中……但我希望在另一个托管bean中获得。在这里,我在页面内有页面(正如我之前提到的

  • 我对swift非常陌生,所以我的代码中可能会有很多错误,但我试图实现的是向带有paramters的本地主机服务器发送请求。更重要的是,我试图实现它,因为我的函数接受两个参数。我不确定如何将这两者结合到实际的URLRequest中?以下是我到目前为止所尝试的

  • 本文向大家介绍Express之get,pos请求参数的获取,包括了Express之get,pos请求参数的获取的使用技巧和注意事项,需要的朋友参考一下 Express的版本4.X Get query参数的获取 url假设:http://localhost:3000/users/zqzjs?name=zhaoqize&word=cool&job[st]=web 路由的定义: 1.获取?name=zh

  • 问题内容: 我的问题是给定的代码: 我访问: 我应该期望[‘a’,’bbb’]的输出,除了Flask似乎只接受第一个参数而忽略其余参数。 这是Flask的限制吗?还是设计使然? 问题答案: 你可以使用与Django类似的,但由于某些原因,Flask文档中未提及: 结果是: 使用如果参数是查询字符串(如题),如果值来自具有相同名称的多个表单输入。 结合了两者,但通常应避免使用更具体的集合。