我正在寻找一种方法来从一个控制器请求映射到另一个进行重定向或转发。
情况是我有一个控制器,它具有三个阶段:用户输入数据 -> 预览页面 -> 提交。在预览请求映射中,我有模型属性及其 BindingResult。如果我在绑定中有错误,我想使用重定向将用户推回新表单,但是当我这样做时,Spring 会重新评估 ModelAttribute,从而重新创建 BindingResult。
一些代码:
@RequestMapping(value = "\new", method = RequestMethod.GET)
@ApplicationUserCreated
public String formNew(
@ModelAttribute("formBean") FormBean formBean,
BindingResult bindingResults,
Model uiModel) {
// Do some stuff
// Send the "new form" view
return "new.jsp";
}
@RequestMapping("/preview", method = RequestMethod.POST)
@ApplicationUserCreated
public String formPreview(
@ModelAttribute("formBean") FormBean formBean,
BindingResult bindingResults,
Model uiModel) {
// TODO: Validate the form
if(bindingResults.hasErrors()) {
// Redirect them back to the "New" form
return "redirect:" + "/new";
} else {
return "preview.jsp";
}
}
请原谅任何拼写错误,因为我不得不尝试简化一些代码。我尝试从 formNew() 方法中删除 BindingResults,但是当 Preview 重定向到 New 时,它似乎仍然会覆盖 BindingResults。我也尝试过“前进”,但结果相同。