ver.2サポートサイト

HOME機能サイト管理スタイルThymeleaf記法

Thymeleaf記法

Thymeleaf(タイムリーフ)は属性名th:~で指定された値を処理し様々なHTMLを生成することができます。

 

<div th:text="${'Hello!'}">Goodbye!</div>

上記の場合th:textの中の文字列"Hello!"を"Goodbye!"の代わりに表示します。

"th:~"の部分はHTMLの正常な属性として扱われ画面に表示されることはありません。

  生成されるHTML
<div>Hello!</div>

 

Thymeleafの属性

Thymeleafに値を処理させるにはth:で始まる専用の属性を指定することが必要です。
主に使用される属性として以下のものが挙げられます。

th:text

値の評価結果をタグのボディに設定します。

既存のボディは置き換わり、処理後のHTMLにはこの属性は残りません。

  処理前
<div th:text=${2}>two</div>
  処理後
<div>2</div>

 

th:value

値の評価結果をvalue属性に値を設定します
既存の値は置き換わり、処理後のHTMLにはこの属性は残りません

  処理前
<input type="submit" value="Next" th:value=${'次へ'}>
  処理後
<input type="submit" value="次へ">

 

th:if

この属性が指定された要素は値がfalseの時削除されます
エラーメッセージなどの特定の条件で出したい時などによく使用されます
処理後のHTMLにはこの属性は残りません

  処理前
<div th:if="${true}" th:text="値はTrueです"></div> <div th:if="${false}" th:text="値はFalseです"></div>
  処理後
<div>値はTrueです</div>
 

th:each

この属性が指定された要素は繰り返し処理されます
<input type="checkbox"><option>などの繰り返し記述される要素によく使用されます
処理後のHTMLにはこの属性は残りません

  処理前 ※valuesは文字列のリスト("abc", "def", "ghi", "jkl")
<div> 
 <span th:each="value : ${values}" th:text="${value}"></span>
</div>
  処理後
<div>
 <span>abc</span>
  <span>def</span>
  <span>ghi</span>
 <span>jkl</span>
</div>

 

使用できる変数

SPIRAL ver2のフォームでは以下の変数が参照できます。

fields

各フィールド情報を持つ変数です。f0+フィールドIDで参照するフィールドを指定することができます。

${fields['f01']} IDが1のフィールド ${fields['f010']} IDが10のフィールド

フィールドが持つデータには以下の様に参照できます。

${fields['f01'].label} フォームで設定したラベル
${fields['f01'].help} フォームで設定したヘルプメッセージ
${fields['f01'].options[0].id} DBで設定したセレクトorマルチセレクトの1番目の項目のID
${fields['f01'].options[0].label} DBで設定したセレクトorマルチセレクトの1番目の項目のラベル

※ optionsはセレクトorマルチセレクトフィールドでのみ参照可能です

 

inputs

ユーザの入力した情報を持つ変数です
fieldsと同様にf0+フィールドIDで指定することでフィールド毎の入力された値を参照できます

${inputs['f01']}

※入力フィールドがマルチセレクトの場合、値は文字列ではなくListで格納されています

 

errors

エラーメッセージを持つ変数です
エラーとなる値を検出した際に不正な値、入力必須、重複不可の中から最も適したエラーメッセージが格納されます
fieldsと同様にf0+フィールドIDで指定することでフィールド毎のエラーメッセージを参照できます

${errors['f01']}

注意事項

th:text=に直接テキストをダブルクォートもしくはシングルクォートで記載した場合その中に半角スペースが入っているとInternal server errorになってしまいます。

例:フォームのエラーメッセージを直接入力 <span class="sp-form-error" th:if="${errors['f01'] != null}" th:text="This is error"></span>
※上記だとフォーム入力ページは表示されるが送信ボタンを押すとInternal server errorになる

ダブルクォート内にシングルクォートで記述することで半角スペースを入力しても正常に反映されます。

<span class="sp-form-error" th:if="${errors['f01'] != null}" th:text="'This is error'"></span>※送信ボタン押下後の確認ページで入力したエラーメッセージが表示される