我有一个这样的表单(在名为add.jsp的页面中):
<form:form action="${pageContext.request.contextPath}/add" method="post" modelAttribute="addForm">
</form:form>
在GET请求中,我填充了modelAttribute:
@RequestMapping(value ="add", method = RequestMethod.GET)
public ModelAndView add(Map<String, Object> model) {
model.put("addForm", new AddUserForm());
return new ModelAndView("add");
}
当我执行表单提交(POST请求)时,我有以下方法:
@RequestMapping(value ="add", method = RequestMethod.POST)
public ModelAndView add(Map<String, Object> model, @Valid AddUserForm form, Errors errors) {
if (errors.hasErrors()) {
//model.put("addForm", new AddUserForm());
return new ModelAndView("add");
}
....
}
但我收到此错误:Neither BindingResult nor plain target object for bean name 'addForm' available as request attribute
我的解决方法是添加model.put("addForm", new AddUserForm());
,我对POST请求发表评论的命令....但是......我的错误在哪里?
答案 0 :(得分:1)
在这两种情况下,您都返回相同的视图(即“添加”),此视图包含一个带有null
的表单,因此模型必须包含一个名为“addForm”的对象。
如果您在POST错误后不想使用新的AddUserForm填充模型,您可能应该:
或
modelAttribute="addForm"