POST后重定向(即使有验证错误)
我试图弄清楚如何“保留” BindingResult,以便可以通过Spring <form:errors>
标记在随后的GET中使用它。我要这样做的原因是由于Google App Engine的SSL限制。我有一个通过HTTP显示的表单,该帖子发布到HTTPS URL。如果我仅转发而不是重定向,则用户将看到https://whatever.appspot.com/my/form URL。我正在努力避免这种情况。任何想法如何解决这个问题?
以下是我要执行的操作,但是使用时我只会看到验证错误return "create"
。
@RequestMapping(value = "/submit", method = RequestMethod.POST)public final String submit(
@ModelAttribute("register") @Valid final Register register,
final BindingResult binding) {
if (binding.hasErrors()) {
return "redirect:/register/create";
}
return "redirect:/register/success";
}
回答:
从Spring 3.1开始,你可以使用RedirectAttributes。在执行重定向之前,添加你希望具有的属性。添加BindingResult和用于验证的对象,在本例中为Register。
对于BindingResult,你将使用名称:“ org.springframework.validation.BindingResult。[ModelAttribute的名称]”。
对于用于验证的对象,将使用ModelAttribute的名称。
要使用RedirectAttributes,你必须将此添加到配置文件中。你还告诉Spring使用一些较新的类:
<mvc:annotation-driven />
现在,无论你将重定向到哪里,都将显示错误
@RequestMapping(value = "/submit", method = RequestMethod.POST)public final String submit(@ModelAttribute("register") @Valid final Register register, final BindingResult binding, RedirectAttributes attr, HttpSession session) {
if (binding.hasErrors()) {
attr.addFlashAttribute("org.springframework.validation.BindingResult.register", binding);
attr.addFlashAttribute("register", register);
return "redirect:/register/create";
}
return "redirect:/register/success";
}
以上是 POST后重定向(即使有验证错误) 的全部内容, 来源链接: utcz.com/qa/413856.html