SpringにおけるModelとModelAndViewの違いをメモしておきます。
ModelとModelAndViewの違い
両者の違いは以下のとおりです。利用の仕方が異なるだけで、どちらを使っても問題ありません。
これだけだとイメージしづらいかと思うので、ControllerクラスでModelとModelAndViewそれぞれを使って、Thymeleafを利用したテンプレート(index.html
)に値を渡すプログラムを作ってみます。結果はどちらも同じです。
index.html
Modelの使用例
引数にModel
を指定し、addAttribute("値の名前", "値")
で値を設定し、戻り値としてテンプレート名(index
)を返します。
ModelAndViewの使用例
引数にModelAndView
を指定し、addObject("値の名前", "値")
で値を、setViewName("テンプレート名")
でテンプレート名を設定します。戻り値として、ModelAndView
自身を返します。
まとめ
SpringにおけるModelとModelAndViewの違いでした。個人的にはすっきり書けるModelが好みです。