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

回到顶部