@PostMappingでちゃんと@ModelAttribute/model.addAttributeしてるのに!!
それ、間違いです。GetMappingの役割がわかれば一瞬です(わからなかった側の人間直で2時間苦戦していました)
GetMappingの役割
1.ビューに初期データを渡すため
ここで@ModelAttributeを使うことで、GETリクエスト時にフォームオブジェクトをビューに渡すことができます。
2.フォームデータのバインディング
@ModelAttributeは、フォームから送信されたデータをオブジェクトにバインドする役割も持っています。@PostMappingでフォームを送信するとき、@ModelAttributeは送信されたデータを受け取って、フォームオブジェクトにマッピングします。
3.GETリクエストでフォームオブジェクトをモデルにセット
@GetMappingで@ModelAttributeを使う理由は、フォームが初期表示される際に、空のまたはデフォルトの状態でフォームオブジェクトをビューに渡すためです。これにより、ユーザーが入力するフォームフィールドを提供できます。
というわけで
controller
@GetMapping("/menu")
public String view(@ModelAttribute("SearchForm") SearchForm form,
@ModelAttribute("InputTrackInfoForm") InputTrackInfoForm inputForm,
Model model) {
こんな感じにつかってあげましょう