我试图弄清楚如何“保留” 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";
}
原文由 Taylor Leese 发布,翻译遵循 CC BY-SA 4.0 许可协议
从 Spring 3.1 开始,您可以使用 RedirectAttributes。在执行重定向之前添加您希望可用的属性。添加 BindingResult 和您用于验证的对象,在本例中为 Register。
对于 BindingResult,您将使用名称:“org.springframework.validation.BindingResult.[您的 ModelAttribute 的名称]”。
对于您用来验证的对象,您将使用 ModelAttribute 的名称。
要使用 RedirectAttributes,您必须将其添加到您的配置文件中。除其他事项外,您还告诉 Spring 使用一些较新的类:
现在错误将显示在您重定向的任何地方