ホームページ >Java >&#&チュートリアル >SpringBoot が Thymeleaf と FreeMarker ビュー レイヤ テクノロジをどのように統合するか
Thymeleaf は、Velocity や FreeMarker などの従来の Java テンプレート エンジンと同様の、新世代の Java テンプレート エンジンです。従来の Java テンプレート エンジンとは異なり、Thymeleaf は HTML プロトタイプをサポートしているため、フロントエンド エンジニアはブラウザでスタイルを直接開いて表示でき、バックエンド エンジニアは実際のデータに基づいて表示効果を確認できます。 Spring Boot は Thymeleaf 自動構成ソリューションを提供しているため、Spring Boot で Thymeleaf を使用すると非常に便利です。 Thymeleaf を Spring Boot に統合するために使用できる手順は次のとおりです
Spring Boot プロジェクトを作成し、spring-boot-starter-web と spring を追加します-boot-starter-thymeleaf は
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!-- 整合Thymeleaf --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency>
Spring Boot は、Thymeleaf の自動構成クラス ThymeleafAutoConfiguration を提供します。関連する構成プロパティは、ThymeleafProperties クラスにあります。ソースの一部です。 ThymeleafProperties クラスのコードは次のとおりです。
@ConfigurationProperties(prefix = "spring.thymeleaf") public class ThymeleafProperties { private static final Charset DEFAULT_ENCODING = StandardCharsets.UTF_8; public static final String DEFAULT_PREFIX = "classpath:/templates/"; public static final String DEFAULT_SUFFIX = ".html"; }
この構成からわかるように、デフォルトのテンプレートの場所は classpath:/templates/ で、デフォルトのテンプレートのサフィックスは .html です。 IDEA を使用して Spring Boot プロジェクトを作成すると、デフォルトでいくつかのファイルがテンプレート フォルダーに作成されます。デフォルトの Thymeleaf 設定パラメータをカスタマイズする必要がある場合は、application.properties で設定できます。一般的な設定の一部は次のとおりです:
#キャッシュを有効にするかどうか、開発中に false に設定できます。デフォルトは true
spring.thymeleaf.cache=false
#テンプレートが存在するかどうかを確認します。デフォルトは true
spring.thymeleaf.check-template=true
#テンプレートが存在するかどうかを確認しますlocation が存在します。デフォルトは true
spring.thymeleaf.check-template-location=true
#テンプレート ファイルのエンコーディング
spring.thymeleaf.encoding=UTF-8
#テンプレート ファイルの場所
spring.thymeleaf.prefix=classpath:/ templates/
#Content-Type 構成
spring.thymeleaf.servlet.content-type=text/html
#テンプレート ファイルのサフィックス
spring.thymeleaf.suffix =.html
次のように Book エンティティ クラスを作成し、コントローラーで ModelAndView を返します:
public class Book { private int id; private String name; private String author; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getAuthor() { return author; } public void setAuthor(String author) { this.author = author; } }
@RestController public class BookController { @GetMapping(value = "/books") public ModelAndView books(){ List<Book> books = new ArrayList<>(); Book b1 = new Book(); b1.setId(1); b1.setAuthor("唐家三少"); b1.setName("斗罗大陆Ⅰ"); Book b2 = new Book(); b2.setId(2); b2.setAuthor("唐家三少"); b2.setName("斗罗大陆Ⅱ"); books.add(b1); books.add(b2); ModelAndView modelAndView = new ModelAndView(); modelAndView.addObject("books",books); modelAndView.setViewName("books"); return modelAndView; } }
リソース ディレクトリに次のように、books.html をテンプレート ディレクトリに作成します。
<!DOCTYPE html> <html lang="en" xmlns:th="http://www.thymeleaf.org"> <head> <meta charset="UTF-8"> <title>图书列表</title> </head> <body> <table border="1"> <tr> <td>图书编号</td> <td>图书名称</td> <td>图书作者</td> </tr> <tr th:each="book:${books}"> <td th:text="${book.id}"></td> <td th:text="${book.name}"></td> <td th:text="${book.author}"></td> </tr> </table> </body> </html>
コードの説明:
最初に、 2 行目の Thymeleaf 名前空間
トラバーサルを通じてブック内のデータを表示します。Thymeleaf では、コレクションのトラバースに th:each が使用され、データの表示に th:text が使用されます。
FreeMarker の統合
1. プロジェクトを作成し、依存関係を追加します
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!-- 整合FreeMarker --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-freemarker</artifactId> </dependency>
2. FreeMarker の構成
@ConfigurationProperties(prefix = "spring.freemarker") public class FreeMarkerProperties extends AbstractTemplateViewResolverProperties { public static final String DEFAULT_TEMPLATE_LOADER_PATH = "classpath:/templates/"; public static final String DEFAULT_PREFIX = ""; public static final String DEFAULT_SUFFIX = ".ftl"; ... }
FreeMarker のデフォルト テンプレートの場所は、Thymeleaf と同じで、両方とも classpath:/templates/ です。デフォルトのファイル接尾辞は .ftl です。開発者は、application.properties でこれらのデフォルト設定を変更できます。
3. コントローラー
4. ビューの作成
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>图书列表FreeMarker</title> </head> <body> <table border="1"> <tr> <td>图书编号</td> <td>图书名称</td> <td>图书作者</td> </tr> <#if books ?? && (books?size>0)> <#list books as book> <tr> <td>${book.id}</td> <td>${book.name}</td> <td>${book.author}</td> </tr> </#list> </#if> </table> </body> </html>
コードの説明:
まず、モデル内の書籍が制御可能であり、データがあることを確認します。
## を実行して、ブラウザに「http://localhost:8081/books」と入力して、実行結果を表示します (図を参照)。 ##################################以上がSpringBoot が Thymeleaf と FreeMarker ビュー レイヤ テクノロジをどのように統合するかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。