SpringMVC重定向。模型和表格清理
假设我有一个web表单,每当提交表单时都会进行验证 如果出现错误,我会将其重定向到同一页面,并使用重定向属性来维护表单值,以便重新提交。 否则,它将成功提交到下一页 问题: (1) 每当我返回或重新访问同一表单url时,它总是保留提交的输入 (2) 尝试提交新值时,会更改(更新)以前提交的数据。 (3) 成功提交后,我希望将其作为新表单对象清除 到目前为止,这是我的控制器代码: 获取 在我的帖子中 当我在GET中设置了一个条件(!model.containsAttribute(“object”)时,我真的很困惑为什么它不返回一个新的已清除表单 我希望有人能向我解释一下问题所在。提前谢谢 编辑: 添加SpringMVC重定向。模型和表格清理,spring,forms,validation,post,get,Spring,Forms,Validation,Post,Get,假设我有一个web表单,每当提交表单时都会进行验证 如果出现错误,我会将其重定向到同一页面,并使用重定向属性来维护表单值,以便重新提交。 否则,它将成功提交到下一页 问题: (1) 每当我返回或重新访问同一表单url时,它总是保留提交的输入 (2) 尝试提交新值时,会更改(更新)以前提交的数据。 (3) 成功提交后,我希望将其作为新表单对象清除 到目前为止,这是我的控制器代码: 获取 在我的帖子中 当我在GET中设置了一个条件(!model.containsAttribute(“object”)
会产生错误:
cvc复杂类型。3.2.2:属性“ignoreDefaultModelOnRedirect”不允许出现在元素“mvc:注释驱动”中。
如果使用ignoreDefaultModelOnRedirect
其他信息-我在Maven build上 您是否已尝试在servlet配置中将重定向时的
忽略默认模型属性设置为true?详情如下:
<mvc:annotation-driven ignore-default-model-on-redirect="true" />
发件人:
默认情况下,“默认”模型的内容在渲染和重定向场景期间都会使用。或者
控制器方法可以声明RedirectAttributes参数,并使用它为重定向提供属性。
将此标志设置为true可确保在重定向场景中永远不会使用“默认”模型,即使
未声明重定向属性参数。将其设置为false意味着“默认”模型可用于
如果控制器方法未声明RedirectAttributes参数,则重定向。默认设置为false,但是
新的应用程序应该考虑将其设置为true。< /P>
所以我找到了答案。我将整个GET方法替换为带有相应参数(url、model、newobject())的ModelAndView
在“if(result.hasErrors())”下,返回应该是转发而不是重定向url。使用这种方法,我会遇到一个问题,因为我使用的是Maven构建,这是唯一的方法吗?您可以尝试使用上面描述的RedirectAttributes
参数。下面是指向java文档的链接,其中有一个示例:Adding给了我一个错误:cvc复杂类型。3.2.2:属性“ignoreDefaultModelOnRedirect”不允许出现在元素“mvc:annotation-driven”中。
@RequestMapping(method = RequestMethod.POST)
public String formSubmit(@ModelAttribute("object" Object object,
final BindingResult result, HttpSession session,
SessionStatus status, RedirectAttributes attr){
//DO some object manipulation code here
//validation code
if(result.hasErrors()){
attr.addFlashAttribute(org.springframework.validation.BindingResult.object", result);
attr.addFlashAttribute("object", object);
return "redirect:/formUrl";
}
else{
//save form inputs here
}
}
return "redirect:successPage";
}
<mvc:annotation-driven ignore-default-model-on-redirect="true" />