Thymeleafテンプレートの使用とSpring Bootとの統合
詳細
次世代JavaテンプレートエンジンThymeleaf
参照先:http://www.tianmaying.com/tutorial/using-thymeleaf
http://blog.csdn.net/u012706811/article/details/52185345
Thymeleafは、XML/XHTML/HTML 5のコンテンツをレンダリングするためのテンプレートエンジンです.JSP,Velocity,FreeMakerなどと同様に,Spring MVCなどのWebフレームワークとWebアプリケーションのテンプレートエンジンとして容易に統合できる.他のテンプレートエンジンと比較して、Thymeleafの最大の特徴は、Webアプリケーション全体を起動することなく、ブラウザでテンプレートページを直接開き、正しく表示できることです.
1.導入依存
mavenに直接導入
依存関係を見るとspring-boot-starter-thymeleafの下にspring-boot-starter-webが含まれているのでspring-boot-starter-webの依存を取り除くことができる.
2.ビュー解析器の構成
Spring-bootの多くの構成にはデフォルトの構成があります.例えば、デフォルトのページマッピングパスはclasspath:/templates/*です.html同様の静的ファイルパスはclasspath:/static/
アプリケーションでpropertiesではthymeleafテンプレート解析器の属性を構成することができる.springMVCを使用したJSP解析器構成のように
具体的に構成可能なパラメータは、
3.DEMOの作成
1.コントローラ
2.view(IDEAで生成されたインデックスとして注釈され、IDEA補完に便利)
3.効果
4.基礎文法
上のDEMOを味わうと、まずhtmlタグを書き換えていることがわかります
このようにすれば、他のラベルに
1.変数値の取得
取得変数の値は
また
2.URLの導入
ThymeleafのURLに対する処理は構文@{…}で処理される
類似のラベルは、
3.文字列置換
多くの場合、文字列の結合操作で完了するには、大きな文字のいずれかを置き換える必要があります.
より簡潔な方法は次のとおりです.
もちろんこの形式の制限は多く、|……|には変数式${...}しか含まれず、他の定数や条件式などは含まれません.
4.演算子
式では、+、-、*、/、%などの算術演算子を使用できます.
論理演算子>,=,=,!=すべて使用できますが、唯一注意しなければならないのは、使用時にHTMLエスケープを使用する必要があることです.
5.条件
if/unless
Thymeleafではth:ifおよびth:unless属性を使用して条件判定を行います.次の例では、ラベルはth:ifで条件が成立した場合にのみ表示されます.
th:unlessはth:ifとは正反対で、式の条件が成立しない限り、その内容が表示されます.
Switch
Thymeleafは同様に多重選択Switch構造をサポートする:
デフォルトのプロパティdefaultは*で表すことができます.
6.サイクル
レンダーリストデータは、非常に一般的なシーンです.たとえば、th:eachラベルを使用して、1つのテーブルにレンダーする必要があるn個のレコードがあります.
ループレンダリングされる要素(ここでは)にth:eachラベルを追加する必要があることがわかります.ここで、th:each="prod:${prods}"は、集合変数prodsを遍歴することを意味し、ループ変数はprodがループ体で式でアクセスできることを意味します.
7.Utilities
テンプレートをより使いやすくするために、ThymeleafはContextに組み込まれた一連のUtilityオブジェクトを提供し、#から直接アクセスできます. #dates #calendars #numbers #strings arrays lists sets maps ...次に、いくつかの一般的な方法を例に挙げるコードを使用します. date
string
補足
spring-boot 1.4以降、thymeleaf 3をサポートする、バージョン番号を変更して修正サポートを行うことができる.3は2に比べて効率が大幅に向上し、ラベルを閉じる必要がなく、類似のlink、imgなどがサポートされており、以下のように構成すればよい.
次世代JavaテンプレートエンジンThymeleaf
参照先:http://www.tianmaying.com/tutorial/using-thymeleaf
http://blog.csdn.net/u012706811/article/details/52185345
Thymeleafは、XML/XHTML/HTML 5のコンテンツをレンダリングするためのテンプレートエンジンです.JSP,Velocity,FreeMakerなどと同様に,Spring MVCなどのWebフレームワークとWebアプリケーションのテンプレートエンジンとして容易に統合できる.他のテンプレートエンジンと比較して、Thymeleafの最大の特徴は、Webアプリケーション全体を起動することなく、ブラウザでテンプレートページを直接開き、正しく表示できることです.
1.導入依存
mavenに直接導入
org.springframework.boot
spring-boot-starter-thymeleaf
依存関係を見るとspring-boot-starter-thymeleafの下にspring-boot-starter-webが含まれているのでspring-boot-starter-webの依存を取り除くことができる.
2.ビュー解析器の構成
Spring-bootの多くの構成にはデフォルトの構成があります.例えば、デフォルトのページマッピングパスはclasspath:/templates/*です.html同様の静的ファイルパスはclasspath:/static/
アプリケーションでpropertiesではthymeleafテンプレート解析器の属性を構成することができる.springMVCを使用したJSP解析器構成のように
#thymeleaf start
spring.thymeleaf.mode=HTML5
spring.thymeleaf.encoding=UTF-8
spring.thymeleaf.content-type=text/html
# ,
spring.thymeleaf.cache=false
#thymeleaf end
具体的に構成可能なパラメータは、
org.springframework.boot.autoconfigure.thymeleaf.ThymeleafProperties
というクラスを見ることができ、上記の構成は実際にはクラスに注入する属性値である.3.DEMOの作成
1.コントローラ
@Controller
public class HelloController {
private Logger logger = LoggerFactory.getLogger(HelloController.class);
/**
* hello
* @return
*/
@RequestMapping(value = "/hello",method = RequestMethod.GET)
public String hello(Model model) {
model.addAttribute("name", "Dear");
return "hello";
}
}
2.view(IDEAで生成されたインデックスとして注釈され、IDEA補完に便利)
hello
3333
3.効果
4.基礎文法
上のDEMOを味わうと、まずhtmlタグを書き換えていることがわかります
このようにすれば、他のラベルに
th:*
という文法を使用することができる.これは次の文法の前提です.1.変数値の取得
3333
取得変数の値は
&
符号である、javaBeanの場合は .
方式で取得されていることがわかる、これはEL式と同様である.また
$
式はthタグの内部にしか書くことができない、そうでなければ発効しない.上記の例ではth:text
タグの値をp
タグの中の値に置き換えるが、pの中の元の値は先端開発時の展示用にすぎない.これで前後端の分離がうまくいった.2.URLの導入
ThymeleafのURLに対する処理は構文@{…}で処理される
パス
パス
Contentパス、static のcssフォルダへのデフォルトアクセス
類似のラベルは、
th:href
とth:src
です.3.文字列置換
多くの場合、文字列の結合操作で完了するには、大きな文字のいずれかを置き換える必要があります.
より簡潔な方法は次のとおりです.
もちろんこの形式の制限は多く、|……|には変数式${...}しか含まれず、他の定数や条件式などは含まれません.
4.演算子
式では、+、-、*、/、%などの算術演算子を使用できます.
th:with="isEven=(${prodStat.count} % 2 == 0)"
論理演算子>,=,=,!=すべて使用できますが、唯一注意しなければならないのは、使用時にHTMLエスケープを使用する必要があることです.
th:if="${prodStat.count} > 1"
th:text="'Execution mode is ' + ( (${execMode} == 'dev')? 'Development' : 'Production')"
5.条件
if/unless
Thymeleafではth:ifおよびth:unless属性を使用して条件判定を行います.次の例では、ラベルはth:ifで条件が成立した場合にのみ表示されます.
Login
th:unlessはth:ifとは正反対で、式の条件が成立しない限り、その内容が表示されます.
Switch
Thymeleafは同様に多重選択Switch構造をサポートする:
User is an administrator
User is a manager
デフォルトのプロパティdefaultは*で表すことができます.
User is an administrator
User is a manager
User is some other thing
6.サイクル
レンダーリストデータは、非常に一般的なシーンです.たとえば、th:eachラベルを使用して、1つのテーブルにレンダーする必要があるn個のレコードがあります.
Product list
NAME
PRICE
IN STOCK
Onions
2.41
yes
ループレンダリングされる要素(ここでは)にth:eachラベルを追加する必要があることがわかります.ここで、th:each="prod:${prods}"は、集合変数prodsを遍歴することを意味し、ループ変数はprodがループ体で式でアクセスできることを意味します.
7.Utilities
テンプレートをより使いやすくするために、ThymeleafはContextに組み込まれた一連のUtilityオブジェクトを提供し、#から直接アクセスできます.
/*
* Format date with the specified pattern
* Also works with arrays, lists or sets
*/
${#dates.format(date, 'dd/MMM/yyyy HH:mm')}
${#dates.arrayFormat(datesArray, 'dd/MMM/yyyy HH:mm')}
${#dates.listFormat(datesList, 'dd/MMM/yyyy HH:mm')}
${#dates.setFormat(datesSet, 'dd/MMM/yyyy HH:mm')}
/*
* Create a date (java.util.Date) object for the current date and time
*/
${#dates.createNow()}
/*
* Create a date (java.util.Date) object for the current date (time set to 00:00)
*/
${#dates.createToday()}
string
/*
* Check whether a String is empty (or null). Performs a trim() operation before check
* Also works with arrays, lists or sets
*/
${#strings.isEmpty(name)}
${#strings.arrayIsEmpty(nameArr)}
${#strings.listIsEmpty(nameList)}
${#strings.setIsEmpty(nameSet)}
/*
* Check whether a String starts or ends with a fragment
* Also works with arrays, lists or sets
*/
${#strings.startsWith(name,'Don')} // also array*, list* and set*
${#strings.endsWith(name,endingFragment)} // also array*, list* and set*
/*
* Compute length
* Also works with arrays, lists or sets
*/
${#strings.length(str)}
/*
* Null-safe comparison and concatenation
*/
${#strings.equals(str)}
${#strings.equalsIgnoreCase(str)}
${#strings.concat(str)}
${#strings.concatReplaceNulls(str)}
/*
* Random
*/
${#strings.randomAlphanumeric(count)}
補足
spring-boot 1.4以降、thymeleaf 3をサポートする、バージョン番号を変更して修正サポートを行うことができる.3は2に比べて効率が大幅に向上し、ラベルを閉じる必要がなく、類似のlink、imgなどがサポートされており、以下のように構成すればよい.
UTF-8
3.0.0.RELEASE
2.0.0
1.8