コントローラーのメソッドで、プレーンな HTTP GET/POST を取得したが、別のコントローラーからのリダイレクトされた要求がないことを確認する方法はありますか?
たとえば、私は持っています
@Controller
public class A {
@RequestMapping("page1")
public String loadPage(final Model model) {
{
// SHOULD CHECK HERE WAS IT INVOKED FROM CLASS' B 'loadPage' METHOD
// OR DIRECTLY BY USER
if (!model.containsAttribute("myForm"))
{
model.addAttribute("myForm", new MyForm());
}
return "view1";
}
}
@Controller
public class B {
@RequestMapping("page2")
public String loadPage(final Model model, RedirectAttributes redirectAttributes) {
MyForm myForm = new MyForm();
// ...
// populate form here with some values
// myForm.setEntries(...);
redirectAttributes.addFlashAttribute("myForm", myForm);
return "redirect:page1";
}
}
更新:質問の現実性を証明するには、 flashAttributesを含む更新されたコード スニペットを参照し、フォーム DTO のモデルに存在するかどうかを確認してください。ご覧のとおり、 myForm属性は既に存在しているためモデルに追加されない場合があります。このアプローチは、コントローラー BからのloadPageでのリクエストの場合に、既に満たされた MyForm を表示できるために実行されます。