Spring MVCのModel、ModelMap、およびModelView

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つのコアコンセプトであるModelModelMap、およびModelAndViewについて説明しました。 また、ビューがこれらの値をどのように利用できるかの例も見てきました。

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