我想以简单的方式将许多@RequestParam注释参数传递给Model对象。
目前,我看到两种选择:
我正在寻找第三种方式,它会自动为我做这件事。
@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一个值时它们基本相同)实际上是我提到的第二种方法在问题中。我正在寻找除了我提到的方式之外的其他方式。
答案 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");
}