Spring Bootは、ModelAndViewを使用してパラメーターをThymeleafテンプレートに渡します

    最近、Thymeleafテンプレートにパラメーターを渡すSpring Bootの例をデバッグしていましたが、多くの落とし穴を踏んでいました。参照用の詳細なプロセスを次に示します。

    まず、ModelAndViewDemoという名前のMavenプロジェクトを作成します。次の表に、重要なファイルの説明を示します。

重要なドキュメント

説明

pom.xml

プロジェクトで使用される依存関係パッケージ、特にThymeleaf依存関係パッケージが導入されました

SpringBootApp.java

クラスを開始

Controller.java

ModelAndViewオブジェクトとフロントエンドThymeleafの相互作用を介したコントローラークラス

Application.properties

Thymeleafの関連する構成を含む構成ファイル

hello.html

Thymeleafテンプレートを含むフロントエンドページファイル。これはresourcesディレクトリのtemplatesディレクトリにあることに注意してください。このディレクトリ構造は、構成ファイルの構成と一致している必要があります。

    最初のステップは、このプロジェクトの依存関係パッケージをpom.xmlに含めることです。キーコードは次のとおりです。その中で、thymeleafテンプレートの依存関係パッケージは、6行目から9行目までのコードを通じて導入されています。 

1  <dependencies>
2	        <dependency>
3	            <groupId>org.springframework.boot</groupId>
4	            <artifactId>spring-boot-starter-web</artifactId>
5	        </dependency>
6	        <dependency>
7	            <groupId>org.springframework.boot</groupId>            
8	<artifactId>spring-boot-starter-thymeleaf</artifactId>
9	        </dependency>
10	    </dependencies>

    2番目のステップは、スタートアップクラスを作成することです。    

1	package prj;
2	import org.springframework.boot.SpringApplication;
3	import org.springframework.boot.autoconfigure.SpringBootApplication;
4	@SpringBootApplication
5	public class SpringBootApp {
6	    public static void main(String[] args) {
7	        SpringApplication.run(SpringBootApp.class, args);
8	    }
9	}

    3番目のステップは、コントローラークラスを作成することです。コードを以下に示します。        

1	package prj.controller;
2	import org.springframework.web.bind.annotation.RequestMapping;
3	import org.springframework.web.bind.annotation.RestController;
4	import org.springframework.web.servlet.ModelAndView;
5	@RestController
6	public class Controller {
7	    @RequestMapping("/welcome")
8	    public ModelAndView welcome() {
9	        ModelAndView modelAndView = new ModelAndView("hello");
10	        modelAndView.getModel().put("name", "Tom");
11	        return modelAndView;
12	    }
13	}

    8行目のwelcomeメソッドでは、ModelAndView型のオブジェクトが最初に9行目に作成され、オブジェクト内のビューがコンストラクターによって「hello」として指定され、10行目のコードがモデルのモデルで使用されます。オブジェクトここでは、キーと値のペアの形式で、キーが名前で値がトムのデータが追加されます。まとめると、welcomeメソッドはキーと値のペアのデータをhelloビューに返します。

    4番目のステップ、thymeleafテンプレートの関連パラメーターをapplication.propertiesに書き込むことです具体的なコードは次のとおりです。    

1	#启用thymeleaf视图
2	spring.thymeleaf.enabled=true
3	#设置Content-Type值
4	spring.thymeleaf.content-type=text/html
5	## 检查模板是否存在,然后再呈现
6	spring.thymeleaf.check-template-location=true
7	# 不启用缓存
8	spring.thymeleaf.cache=false
9	# 构建前缀
10	spring.thymeleaf.prefix=classpath:/templates/
11	# 构建后缀
12	spring.thymeleaf.suffix=.html

    対応するパラメータ項目の前に注記があり、自分で読むことができますが、ここに次の2つの重要な注意点があります。

  1. thymeleafビューを使用するには、2行目に示されているパラメーターを構成する必要があります。
  2. 10行目と12行目で定義されている接頭辞と接尾辞は、ModelAndViewオブジェクトのビューと組み合わせて使用​​されます。たとえば、Controller.javaでは、ModelAndViewで返されるビューはhelloであるため、プレフィックスとサフィックスがそれに応じて追加されます。プラス記号の後の値はclasspath:/templates/hello.htmlで、ビューの場所を指定できます。最後のジャンプが行われるファイル。

    5番目のステップでは、thymeleafテンプレートを含むhello.htmlページを作成する必要があります。コードを以下に示します。    

1	<!DOCTYPE html>
2	<html  lang="en" xmlns:th="http://www.thymeleaf.org">
3	<head>
4	    <meta charset="UTF-8">
5	    <title>welcome</title>
6	</head>
7	<body>
8	    Welcome:<span th:text="${name}"></span>
9	</body>
10	</html>

    その中で、2行目では、8行目で使用するthタグの名前空間が指定されています。これは、thymeleafテンプレートからのものです。

    8行目では、th:text = "$ {name}"の形式で、$ {name}パラメーターを格納するためのプレースホルダーが指定されており、特定のnameパラメーター値がバックエンドから返されます。このページから、thymeleafテンプレートの次のスタイル機能を確認できます。

  1. この例では、thymeleafテンプレートがHTML5コードに埋め込まれています。これを使用する場合は、2行目に示すようにテンプレート属性要素の名前空間を導入する必要があります。
  2. html5などのフロントエンドページでは、thymeleaf構文を使用して、8行目のようにパラメーターのプレースホルダーを設定できます。これにより、バックエンドがModelAndViewやその他のフォームを介してパラメーターを渡すときに、プレースホルダーがある場所に配置できます。動的表示。

    開発が完了したら、プロジェクトを開始し、コントローラーのwelcomeメソッドの前の@RequestMappingアノテーションに示されているように、ブラウザーにhttp:// localhost:8080 / welcomeと入力すると、出力「Welcome:Tom」が表示されます。 。また、リクエストの開始からデータの表示までの主なプロセスは次のとおりです。

  1. @RequestMappingアノテーションの定義によれば、http:// localhost:8080 / welcomeリクエストはwelcomeメソッドによって処理されます。
  2. 戻りビューはwelcomeメソッドでhelloに設定され、nameパラメーターの値はTomに設定されます。
  3. application.propertiesの構成に従って、返されるビューページは、構成されたプレフィックスとサフィックスに従って決定されます。これは、リソースの下のテンプレートディレクトリにあるhello.htmlです(ディレクトリはこのプロジェクトのクラスパスにあるため) )。
  4. 最終的に、thymeleafテンプレートで定義されているようにhello.htmlが表示され、nameパラメーターのプレースホルダーが配置されている場所に「Tom」という単語が表示されます。これは、誰もが最終的に見た結果を示しています。

おすすめ

転載: blog.csdn.net/sxeric/article/details/113913717