1概要

この記事では、Spring MVCによって提供されているコアの

__org.springframework.ui.Model








org.springframework.ui.ModelMap

、および

org.springframework.web.servlet.ModelView__の使用方法について説明します。


2 Mavenの依存関係


pom.xml

ファイルの

spring-context

依存関係から始めましょう:

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

スプリングコンテキスト依存関係の最新版はhttps://search.maven.org/classic/#search%7Cga%7C1%7Ca%3A%22spring-context%22[ここ]にあります。


ModelAndView

では、

spring-web

依存関係が必要です。

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

spring-web依存関係の最新版はhttps://search.maven.org/classic/#search%7Cga%7C1%7Ca%3A%22spring-web%22[here]にあります。

また、Thymeleafをビューとして使用する場合は、この依存関係をpom.xmlに追加してください。

<dependency>
    <groupId>org.thymeleaf</groupId>
    <artifactId>thymeleaf-spring3</artifactId>
    <version>3.0.8.RELEASE</version>
</dependency>

Thymeleaf依存関係の最新版はhttps://mvnrepository.com/artifact/org.thymeleaf/thymeleaf-spring3[here]にあります。


3

モデル


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

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

使用可能なデータをビューに提供するために、このデータを単にその

Model

オブジェクトに追加します。さらに、属性を持つマップは

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

です。

このインターフェースにより、Spring MVCが必要とするすべての情報を1回で返すことができます。

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


6. 景色

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

Thymeleafテンプレートファイルがコントローラのメソッドのターゲットとして表示されている場合モデルを通過したパラメータは、Thymeleaf HTMLコード内からアクセス可能になります。

<!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

について説明しました。また、ビューがこれらの値をどのように利用できるかの例も見ました。

いつものように、これらすべての例とコードスニペットの実装はhttps://github.com/eugenp/tutorials/tree/master/spring-all[Githubに追加]で見つけることができます。