チュートリアルの春BOOT2シリーズ(9)春ブーツ統合Thymeleaf

それはゆっくりと分離の人気の終わり頃開発されていますが、学んだ、いくつかの前の開発企業や後端が残っている歌のGeによると、関係なく、メイクのにかかわらず、前回のページで開発されたバックエンドの私たちは、バックエンドに必要になりますしながらテンプレート(実際には、前であっても、分離の終了後に、電子メールテンプレートを送信するなど、いくつかのシナリオでページテンプレートを使用する必要があります)。

早春のブートも、ページテンプレート、今春ブーツがサポートされていない速度、および主要なサポートはThymeleafとFreemarkerの、もちろん、Javaは最も基本的なページテンプレートとしてJSP、春ブートがサポートされているページテンプレートとしての速度の使用をサポートしていますあまりにも多くのトラブルを使用しています。

歌のGeは、これらの3つのページテンプレート技術のそれぞれをご紹介するために3件の記事を使用する予定です。

今日は春ブーツThymeleafの主要な統合を見てみましょう!

Thymeleafプロフィール

Thymeleafは速度、FreeMarkerのおよび他の従来のJavaのテンプレートエンジンに似ているJavaのテンプレートエンジン、新世代のですが、伝統的な違いがJavaのテンプレートエンジン、ThymeleafのサポートHTMLプロトタイプということです。

これは、エンジニアがブラウザで直接正面のスタイルを開くことができます、だけでなく、エンジニアがディスプレイを見て、実際のバックエンドのデータを組み合わせることができ、同時に、SpringBootはThymeleaf自動プロビジョニング・ソリューションを提供し、でSpringBootでThymeleafを使用することは非常に簡単です。

実際には、外部のページのレンダリングのために、基本的なHTMLを示すにThymeleafの添加はまた、我々はメッセージを送って行うとき、あなたはテンプレートThymeleafとして電子メールを送信することができ、例えば、HTMLフラグメントとしてレンダリングすることができます。

また、Thymeleafのテンプレート接尾ので.html、あなたが直接、そのため、非常に便利なプレビューをブラウザで開くことができます。

統合

  • プロジェクトを作成します。

あなただけのThymeleafは、プロジェクトを作成、追加することができたときに、非常に簡単Thymeleafを統合春ブーツ:

以下に依存一度作成、のpom.xml:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

もちろん、Thymeleaf春ブーツに使用することができ、他の場所でも使用することができないだけではなく、Thymeleafのための春ブーツが自動化されたコンフィギュレーション・プログラムのセットを提供し、コンフィギュレーションのこのセットは、クラスの属性をorg.springframework.boot.autoconfigure.thymeleaf.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";
        private boolean checkTemplate = true;
        private boolean checkTemplateLocation = true;
        private String prefix = DEFAULT_PREFIX;
        private String suffix = DEFAULT_SUFFIX;
        private String mode = "HTML";
        private Charset encoding = DEFAULT_ENCODING;
        private boolean cache = true;
        //...
}
  1. まずによる@ConfigurationProperties注釈、application.propertiesの接頭辞spring.thymeleafの構成及び結合のこのクラスのプロパティ。
  2. 最初の3つのstatic変数は、デフォルトのエンコード形式、ViewResolverの接頭辞、接尾辞などを定義します。
  3. フロント三列構成、見ることができ、Thymeleaf中にテンプレートの既定の場所resources/templatesのディレクトリ、デフォルトの接尾辞html
  4. 開発者は、その後、彼らは提供されている場合、デフォルトを使用し、その後、自分自身を提供しない場合、これらの構成、application.propertiesspring.thymeleaf関連する構成の開始。

そして、私たちはただ、それが提供されるThymeleafに、自動化されたコンフィギュレーションクラスの春ブーツを記載しているorg.springframework.boot.autoconfigure.thymeleaf.ThymeleafAutoConfiguration次のように、ソースコードの一部

@Configuration
@EnableConfigurationProperties(ThymeleafProperties.class)
@ConditionalOnClass({ TemplateMode.class, SpringTemplateEngine.class })
@AutoConfigureAfter({ WebMvcAutoConfiguration.class, WebFluxAutoConfiguration.class })
public class ThymeleafAutoConfiguration {
}

それは、このクラスの自動化された構成で見ることができ、最初のインポートThymeleafPropertiesおよび@ConditionalOnClass注釈は、現在のシステムが存在する場合にことを示しているTemplateModeSpringTemplateEngineクラスは、自動化された設定の現在のクラスを有効にするために、それは限り、プロジェクトがで導入されたとして、あるThymeleaf関連の依存関係、この設定が有効になります。

私たちは、ほぼすべての変更を加える必要はありません。デフォルトの設定では、直接使用することができます。開発者は、特別なニーズを持っている場合は、中application.propertiesをspring.thymeleafするためにで開始するプロパティを設定することができます。

  • 作成コントローラ

その後、我々は、コントローラを作成することができ、実際には、Thymeleaf依存性の導入後、我々は、任意の構成を行うことはできません。新しいIndexController次のように:

@Controller
public class IndexController {
    @GetMapping("/index")
    public String index(Model model) {
        List<User> users = new ArrayList<>();
        for (int i = 0; i < 10; i++) {
            User u = new User();
            u.setId((long) i);
            u.setName("javaboy:" + i);
            u.setAddress("深圳:" + i);
            users.add(u);
        }
        model.addAttribute("users", users);
        return "index";
    }
}
public class User {
    private Long id;
    private String name;
    private String address;
    //省略 getter/setter
}

IndexController復帰論理ビュー名+と呼ばれるビューのデータ・ロジックindex、我々がする必要があることを意味し、resources/templates名前のディレクトリを提供テンプレートファイルを。index.htmlThymeleaf

  • Thymeleafを作成します
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<table border="1">
    <tr>
        <td>编号</td>
        <td>用户名</td>
        <td>地址</td>
    </tr>
    <tr th:each="user : ${users}">
        <td th:text="${user.id}"></td>
        <td th:text="${user.name}"></td>
        <td th:text="${user.address}"></td>
    </tr>
</table>
</body>
</html>

ではThymeleafによってth:each通じコレクションを指示、表示データth:text実装命令、

ことに注意してくださいindex.htmlトップが導入されるthymeleaf名前空間を。

設定されたら、プロジェクトを開始することができ、およびアクセス/インデックス・インタフェースは、データ・セットで見ることができます:

また、Thymeleafサポートがjs直接利用可能であるModel変数。たとえば、IndexController変数がありますusername

@Controller
public class IndexController {
    @GetMapping("/index")
    public String index(Model model) {
        model.addAttribute("username", "李四");
        return "index";
    }
}

ページテンプレートでは、この変数にjsファイルに直接取得することができます:

<script th:inline="javascript">
    var username = [[${username}]];
    console.log(username)
</script>

この機能は、それThymeleaf特徴の一つとみなされています。

マニュアルレンダリング

しかし、我々は次のように、例えば、私は、リソース/ templatesディレクトリにあるメールテンプレートを作成し、一般的には、この時間は、メッセージを送信するために便利です、我々はまた、手動Thymeleafのテンプレートをレンダリングすることができ、Thymeleafのテンプレートを返すことです言いました:

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<p>hello 欢迎 <span th:text="${username}"></span>加入 XXX 集团,您的入职信息如下:</p>
<table border="1">
    <tr>
        <td>职位</td>
        <td th:text="${position}"></td>
    </tr>
    <tr>
        <td>薪水</td>
        <td th:text="${salary}"></td>
    </tr>
</table>
<img src="http://www.javaboy.org/images/sb/javaboy.jpg" alt="">
</body>
</html>

これは、HTMLテンプレートで、いくつかの変数があり、私たちはその後、メールで送信された文字列は、その後、どのように手動でレンダリングするために、文字列の文字列にこのHTMLテンプレートをレンダリングしたいですか?

@Autowired
TemplateEngine templateEngine;
@Test
public void test1() throws MessagingException {
    Context context = new Context();
    context.setVariable("username", "javaboy");
    context.setVariable("position", "Java工程师");
    context.setVariable("salary", 99999);
    String mail = templateEngine.process("mail", context);
    //省略邮件发送
}
  1. レンダリングする場合、我々は(我々はそこにこの例のThymeleafに依存紹介するときには、ある)Thymeleaf自動設定クラスで構成されたTemplateEngineオブジェクトを挿入する必要があります。
  2. そして、Contextオブジェクトは、設定変数を格納するために使用されます。
  3. レンダリングするためのプロセスメソッドを呼び出し、戻り値はメソッドのレンダリングされたHTML文字列である、そして我々は、文字列を送信します。

:これらは、ドキュメントThymeleafを参照することができ、それ自体、このページテンプレートThymeleafより多くの利用状況について、春ブーツ統合Thymeleafのいくつかの重要なポイントですhttps://www.thymeleaf.org

概要

春ブーツとThymeleafの統合は、それはあなたがThymeleafを学ぶの公式ドキュメントThymeleaf使用についての詳細を読むことができ、非常に簡単である場合は、この記事では、あなたは簡単に紹介いくつかの問題を示しています。私はGitHubのにアップロードしたこの論文の例:https://github.com/lenve/javaboy-code-samples

このことについて、議論の質問があり、メッセージを残してください。

ジャワ、JavaのドライソングGeはあなたのために慎重に準備された受信した後、国民の関心番号[南]少し雨が、懸念は返信共有するために、定期的に春ブーツ+マイクロサービスとフロントと分離フルスタック技術、ビデオチュートリアルの後端に焦点を当てました!

おすすめ

転載: www.cnblogs.com/lenve/p/11606097.html