Spring MVC将@RequestParam注释参数传递给模型的简单方法

时间:2014-02-21 01:25:55

标签: java spring spring-mvc

我想以简单的方式将许多@RequestParam注释参数传递给Model对象。

目前,我看到两种选择:

  1. 你可以手工完成(不是那么容易,下面的例子)
  2. 您可以为相关参数创建命令对象,并将对象传递给模型。
  3. 我正在寻找第三种方式,它会自动为我做这件事。

    @RequestMapping
    public void handle(@RequestParam String p1, @RequestParam String p2,
           @RequestParam String p3, @RequestParam String p4, Model model) {
         model.addAttribute("p1",p1);
         model.addAttribute("p2",p2);
         model.addAttribute("p3",p3);
         model.addAttribute("p4",p4);
    }
    

    我需要这个的主要原因是在出错时容易将POST处理程序中的参数传递给flash属性。

    更新: @ModelAttribute方法(或指定没有它的bean,我认为当你不给@ModelAttribute一个值时它们基本相同)实际上是我提到的第二种方法在问题中。我正在寻找除了我提到的方式之外的其他方式。

2 个答案:

答案 0 :(得分:0)

我更喜欢使用

@RequestMapping
public void handle(BeanDTO p1, Model model ){
    model.addAttribute("Bean",p1);
} 

它接受与属性bean匹配的所有参数并将它们放置

classs BeanDTO {    
    private String p1;
    private String p2;
    private String p3;
} 

抱歉没有@RequestBody

检查一下。 Spring MVC bean mapping to HTTP GET request parameters similar to @BeanParam

答案 1 :(得分:0)

我会这样做。其中P是带有请求参数的java bean

@RequestMapping
    public ModelAndView handle(@ModelAttribute("p") P p) 
    {
      if (validationerror){
          return new ModelAndView("index","p",p);
      }
      return new ModelAndView("success");
    }