Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SpringMVC重定向。模型和表格清理_Spring_Forms_Validation_Post_Get - Fatal编程技术网

SpringMVC重定向。模型和表格清理

SpringMVC重定向。模型和表格清理,spring,forms,validation,post,get,Spring,Forms,Validation,Post,Get,假设我有一个web表单,每当提交表单时都会进行验证 如果出现错误,我会将其重定向到同一页面,并使用重定向属性来维护表单值,以便重新提交。 否则,它将成功提交到下一页 问题: (1) 每当我返回或重新访问同一表单url时,它总是保留提交的输入 (2) 尝试提交新值时,会更改(更新)以前提交的数据。 (3) 成功提交后,我希望将其作为新表单对象清除 到目前为止,这是我的控制器代码: 获取 在我的帖子中 当我在GET中设置了一个条件(!model.containsAttribute(“object”)

假设我有一个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" />