ModelAndViewを返す方法
@RequestMapping(value = "/list", method = RequestMethod.GET)
public ModelAndView list(
@UserAuth UserAuth user,
ModelAndView mav) {
if (!user.isAuthenticated()) {
mav.setViewName("redirect:http://www.test.com/login.jsp");
return mav;
}
mav.setViewName("list");
mav.addObject("articles", listService.getLists());
return mav;
}
文字列を返す方法
@RequestMapping(value = "/list", method = RequestMethod.GET)
public String list(
@UserAuth UserAuth user,
Model model) {
if (!user.isAuthenticated()) {
return "redirect:http://www.test.com/login.jsp";
}
model.addAttribute("articles", listService.getLists());
return "list";
}
これらは同じ働きをします。どちらが良い方法ですか?そして違いは何ですか?
より良い方法はありません。両方とも完全に有効です。どちらを使用するかは、どちらがアプリケーションに適しているかによって決まります。Springではどちらの方法でも使用できます。
歴史的に、2つのアプローチは異なるバージョンのSpringから来ています。 ModelAndView
アプローチは、Spring 2.0より前のコントローラからモデルとビューの両方の情報を返す主な方法でした。 Model
パラメーターとString
戻り値を組み合わせることができるようになりましたが、古いアプローチは引き続き有効です。
2セントも追加したいと思います。 2番目のアプローチは、コンベンション指向に近いものです。つまり、開発者は自分のビューが何であるかを明示的に言及していますが、返される文字列はビュー名であることを暗黙的に示しています。コーディングが少なく、読みやすく、標準です。 ModelAndViewを使用した従来の方法よりもはるかに優れています