...">

Thymeleafチュートリアル:第9章ローカル変数

目次

9ローカル変数


Thymeleafは、テンプレートの特定のフラグメントに対して定義され、このフラグメント内でのみ実行可能な変数をローカル変数と呼びます。

すでに見た例は、製品リストページのprod変数です。

<tr th:each="prod : ${prods}"> ... </tr> 

このprod変数は、<tr>タグ内でのみ使用できます。 特に:


Thymeleafは、 th:with属性を使用して、繰り返しなしでローカル変数を宣言する方法を提供し、その構文は属性値を指定するようなものです。

 <div th:with="firstPer=${persons[0]}"> <p> The name of the first person is <span th:text="${firstPer.name}">Julius Caesar</span>. </p> </div> 

th:withが処理されると、このfirstPer変数はローカル変数として作成され、コンテキストに基づいて変数のリストに追加されるため、コンテキストで宣言されている他の変数とともに実行できますが、それを含む<div>タグ内のみです。

通常の複数割り当て構文を使用して、複数の変数を同時に定義できます。

 <div th:with="firstPer=${persons[0]},secondPer=${persons[1]}"> <p> The name of the first person is <span th:text="${firstPer.name}">Julius Caesar</span>. </p> <p> But the name of the second person is <span th:text="${secondPer.name}">Marcus Antonius</span>. </p> </div> 

th:with属性を使用すると、同じ属性で定義された変数を再利用できます。

 <div th:with="company=${user.company + ' Co.'},account=${accounts[company]}">...</div> 

食料品のホームページで使用してみましょう! フォーマットされた日付を表示するために作成したコードを覚えていますか?

 <p> Today is: <span th:text="${#calendars.format(today,'dd MMMM yyyy')}">13 february 2011</span> </p> 

さて、@ dd MMMM yyyy @をロケールに依存させたい場合はどうでしょうか? たとえば、home_en.propertiesに次のメッセージを追加できます。

 date.format=MMMM dd'','' yyyy 

...およびhome_es.propertiesに相当するもの

 date.format=dd ''de'' MMMM'','' yyyy 

次に、 th:withを使用して、変数のローカライズされた日付形式を取得し、それをth:テキスト式で使用します

 <p th:with="df=#{date.format}"> Today is: <span th:text="${#calendars.format(today,df)}">13 February 2011</span> </p> 

それはきれいで簡単でした。 実際、 th:withの方がth:textよりも優先度が高いという事実を考えると、spanタグでこれらすべてを解決できます

 <p> Today is: <span th:with="df=#{date.format}" th:text="${#calendars.format(today,df)}">13 February 2011</span> </p> 

あなたは思うかもしれません:優先度? これについてはまだ話していません! 心配しないでください。これは次の章で説明するとおりです。

Source: https://habr.com/ru/post/J351852/


All Articles