1. 概要

この記事では、コアorg。springframework.ui.Model org。springframework.ui.ModelMapの使用法について説明します。 およびorg。springframework.web.servlet.ModelAndViewはSpringMVCによって提供されます。

2. Mavenの依存関係

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

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context</artifactId>
    <version>5.2.2.RELEASE</version>
</dependency>

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

ModelAndView の場合、spring-web依存関係が必要です。

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-web</artifactId>
    <version>5.2.2.RELEASE</version>
</dependency>

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

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

<dependency>
    <groupId>org.thymeleaf</groupId>
    <artifactId>thymeleaf-spring5</artifactId>
    <version>3.0.11.RELEASE</version>
</dependency>

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

3. モデル

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

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

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

@GetMapping("/showViewPage")
public String passParametersWithModel(Model model) {
    Map<String, String> map = new HashMap<>();
    map.put("spring", "mvc");
    model.addAttribute("message", "Baeldung");
    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", "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コード内からアクセスできます。

<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <title>Title</title>
</head>
<body>
    <div>Web Application. Passed parameter : th:text="${message}"</div>
</body>
</html>

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

7. 結論

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

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