Spring MVCのModel、ModelMap、およびModelAndView

1。概要

この記事では、Spring MVCが提供するコアorg.springframework.ui.Model org.springframework.ui.ModelMap、およびorg.springframework.web.servlet.ModelAndViewの使用について説明します。

2.Mavenの依存関係

pom.xmlファイルのspring-context依存関係から始めましょう:

 org.springframework spring-context 5.2.2.RELEASE 

Spring-Context依存関係の最新バージョンはここにあります。

ModelAndView春・ウェブの依存関係が必要です。

 org.springframework spring-web 5.2.2.RELEASE 

Spring-Web依存関係の最新バージョンはここにあります。

また、ビューとしてThymeleafを使用する場合は、この依存関係をpom.xmlに追加する必要があります。

 org.thymeleaf thymeleaf-spring5 3.0.11.RELEASE 

Thymeleaf依存関係の最新バージョンはここにあります。

3.モデル

ここで最も基本的な概念であるモデルから始めましょう。

簡単に言えば、モデルはビューのレンダリングに使用される属性を提供できます。

ビューに使用可能なデータを提供するには、このデータをModelオブジェクトに追加するだけです。さらに、属性を持つマップをモデルインスタンスとマージできます。

@GetMapping("/showViewPage") public String passParametersWithModel(Model model) { Map map = new HashMap(); map.put("spring", "mvc"); model.addAttribute("message", "Baeldung"); model.mergeAttributes(map); return "viewPage"; }

4. ModelMap

上記のModelインターフェイスと同様に、ModelMapは、ビューをレンダリングするための値を渡すためにも使用されます。

ModelMapの利点は、値のコレクションを渡し、これらの値をマップ内にあるかのように扱うことができることです。

@GetMapping("/printViewPage") public String passParametersWithModelMap(ModelMap map) { map.addAttribute("welcomeMessage", "welcome"); map.addAttribute("message", "Baeldung"); return "viewPage"; }

5. ModelAndView

ビューに値を渡すための最後のインターフェースはModelAndViewです。

このインターフェースにより、SpringMVCに必要なすべての情報を1回のリターンで渡すことができます。

@GetMapping("/goToViewPage") public ModelAndView passParametersWithModelAndView() { ModelAndView modelAndView = new ModelAndView("viewPage"); modelAndView.addObject("message", "Baeldung"); return modelAndView; } 

6.ビュー

これらのモデル内に配置するすべてのデータは、ビュー(通常、Webページをレンダリングするためのテンプレート化されたビュー)によって使用されます。

コントローラのメソッドの対象となるThymeleafテンプレートファイルがビューとしてある場合。モデルを介して渡されたパラメーターには、thymeleafHTMLコード内からアクセスできます。

   Title Web Application. Passed parameter : th:text="${message}" 

ここで渡されるパラメーターは、プレースホルダーと呼ばれる構文$ {message}を介して使用されます。Thymeleafテンプレートエンジンは、このプレースホルダーを、モデルを介して渡された同じ名前の属性からの実際の値に置き換えます。

7.結論

このクイックチュートリアルでは、Spring MVCの3つのコアコンセプトであるModelModelMapModelAndViewについて説明しました。また、ビューがこれらの値をどのように利用できるかの例も確認しました。

いつものように、これらすべての例とコードスニペットの実装はGithubにあります。