あるコントローラーリクエストから別のコントローラーリクエストへのリダイレクトまたは転送を行う方法を探しています。
状況は、ユーザーがデータを入力->プレビューページ->送信の3つのステージを持つコントローラーを持っているということです。プレビューリクエストマッピングには、モデル属性とその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が上書きされるようです。代わりに「転送」も試してみましたが、同じ結果になりました。