Spring MVCのモデル、ModelMap、およびモデルビュー
1. 概要
この記事では、Spring MVCによって提供されるコアorg.springframework.ui.Model,org.springframework.ui.ModelMapおよびorg.springframework.web.servlet.ModelViewの使用について説明します。
2. Mavenの依存関係
pom.xmlファイルのspring-context依存関係から始めましょう。
org.springframework
spring-context
4.3.11.RELEASE
Spring-Context依存関係の最新バージョンはhereにあります。
ModelAndViewの場合、spring-webの依存関係が必要です。
org.springframework
spring-web
4.3.11.RELEASE
Spring-Web依存関係の最新バージョンはhereにあります。
そして、ビューとしてThymeleafを使用する場合、pom.xmlにこの依存関係を追加する必要があります。
org.thymeleaf
thymeleaf-spring3
3.0.8.RELEASE
Thymeleaf依存関係の最新バージョンはhereにあります。
3. Model
ここで最も基本的な概念であるModelから始めましょう。
簡単に言えば、モデルはビューのレンダリングに使用される属性を提供できます。
ビューに使用可能なデータを提供するには、このデータをそのModelオブジェクトに追加するだけです。 さらに、属性を持つマップは、Modelインスタンスとマージできます。
@GetMapping("/showViewPage")
public String passParametersWithModel(Model model) {
Map map = new HashMap<>();
map.put("spring", "mvc");
model.addAttribute("message", "example");
model.mergeAttributes(map);
return "viewPage";
}
4. ModelMap
上記のModelインターフェースと同様に、ModelMapも値を渡してビューをレンダリングするために使用されます。
ModelMapの利点は、値のコレクションを渡し、これらの値をMap内にあるかのように扱うことができることです。
@GetMapping("/printViewPage")
public String passParametersWithModelMap(ModelMap map) {
map.addAttribute("welcomeMessage", "welcome");
map.addAttribute("message", "example");
return "viewPage";
}
5. ModelAndView
ビューに値を渡すための最後のインターフェースはModelAndViewです。
このインターフェイスにより、Spring MVCに必要なすべての情報を1回のリターンで渡すことができます。
@GetMapping("/goToViewPage")
public ModelAndView passParametersWithModelAndView() {
ModelAndView modelAndView = new ModelAndView("viewPage");
modelAndView.addObject("message", "example");
return modelAndView;
}
6. 景色
これらのモデル内に配置するすべてのデータは、ビュー(一般に、Webページをレンダリングするためのテンプレートビュー)によって使用されます。
コントローラのメソッドの対象となるThymeleafテンプレートファイルがビューとしてある場合。 モデルを介して渡されるパラメーターには、thymeleaf HTMLコード内からアクセスできます。
Title
Web Application. Passed parameter : th:text="${message}"
ここで渡されるパラメーターは、プレースホルダーと呼ばれる構文${message}を介して使用されます。 Thymeleafテンプレートエンジンは、このプレースホルダーを、モデルを介して渡される同じ名前の属性からの実際の値に置き換えます。
7. 結論
このクイックチュートリアルでは、Spring MVCの3つのコアコンセプトであるModel、ModelMap、およびModelAndViewについて説明しました。 また、ビューがこれらの値をどのように利用できるかの例も見てきました。
いつものように、これらすべての例とコードスニペットの実装はover on Githubにあります。