我有一个问题是ModelAndView和ModelMap之间的一个点差异。
当requestMethod为“GET”且requestMethod为“POST”时,我想维护modelAndView。 我的模型和视图保存了其他人。
所以我将modelAndView返回类型改为“GET”,“POST”方法。
但是,请求丢失了commandObject,form:errors ...,如果请求在“POST”上返回showForm,因为请求验证失败。
例)
private ModelAndView modelAndView;
public ControllerTest{
this.modelAndView = new ModelAndView();
}
@RequestMapping(method = RequestMethod.GET)
public ModelAndView showForm(ModelMap model) {
EntityObject entityObject = new EntityObject();
CommandObject commandObject = new CommandObject();
commandObject.setEntityObject(entityObject);
model.addAttribute("commandObject", commandObject);
this.modelAndView.addObject("id", "GET");
this.modelAndView.setViewName("registerForm");
return this.modelAndView;
}
@RequestMapping(method = RequestMethod.POST)
public ModelAndView submit(@ModelAttribute("commandObject") CommandObject commandObject,
BindingResult result, SessionStatus status) {
this.commandValidator.validate(commandObject, result);
if (result.hasErrors()) {
this.modelAndView.addObject("id", "POST");
this.modelAndView.setViewName("registerForm");
return this.modelAndView;
} else {
this.modelAndView.addObject("id", "after POST");
this.modelAndView.setViewName("success");
}
status.setComplete();
return this.modelAndView;
}
答案 0 :(得分:4)
目前尚不清楚你的问题是什么,但对于ModelMap和ModelAndView之间的区别,它们来自Spring MVC的两个不同“代”。 ModelAndView来自Spring 2.0风格,而ModelMap是2.5中引入的。
一般来说,如果你的控制器是Spring 2.0控制器的子类,比如SimpleFormController(我认为你的代码片段是),那么ModelAndView是可以使用的东西。如果您使用的是Spring 2.5 @Controller annotatations,那么最好使用ModelMap。
答案 1 :(得分:0)
我的问题更多地是关于如何在提交时将html表单对象绑定到POJO。
Java代码:
@RequestMapping(method = RequestMethod.POST)
public String processRequest(ModelMap map, @ModelAttribute("accessRequestBean") AccessRequestBean accessRequestBean){
logger.debug(accessRequestBean);
return("NOTHING");
}
HTML代码:
<@spring.bind "accessRequestBean" />
<form>
...