SPIRAL ver.2 では、サーバーサイドで動作するテンプレートエンジン Thymeleafを採用しています。
特徴としては、タグに 属性名th:~ を設定することで、タグ構成を保ちながら動的に操作できる点です。
今回は、ログイン時のユーザーのステータスで表示内容を制御する方法を解説し、活用例もご紹介します。
特徴としては、タグに 属性名th:~ を設定することで、タグ構成を保ちながら動的に操作できる点です。
今回は、ログイン時のユーザーのステータスで表示内容を制御する方法を解説し、活用例もご紹介します。
サンプルコードと解説
サンプルコード
<th:block th:if="${siteClient.record[フィールドID]?.id eq 1 OR siteClient.record[フィールドID]?.id eq 2}"> <!--/* ステータスが1 または、2 の場合に表示したいブロック/コンテンツを設定 */--> </th:block> <th:block th:if="${siteClient.record[フィールドID]?.id eq 3}"> <!--/* ステータスが3 の場合に表示したいブロック/コンテンツを設定 */--> </th:block> <th:block th:unless="${siteClient.record[フィールドID]?.id eq 1 OR siteClient.record[フィールドID]?.id eq 2 OR siteClient.record[フィールドID]?.id eq 3}"> <!--/* ステータスが1 または、2 または、3 以外の場合に表示したいブロック/コンテンツを設定 */--> </th:block>
サンプルコードでは、認証エリアにログインしたユーザーのステータスに応じて下記の3パターンで表示制御をしています。
・1 または、2 の場合
・3 の場合
・それ以外の場合
各数字はセレクト型フィールドのラベルIDです。
・1 または、2 の場合
・3 の場合
・それ以外の場合
各数字はセレクト型フィールドのラベルIDです。
Thymeleaf 解説
①<th:block>...</th:block>
擬似的にブロックを形成できるタグの記述です。
HTMLとして th:block のタグ自体は出力されません。
表示/非表示となるコンテンツを囲んでif文などの処理を組み込みます。
サンプルコードでは、if文の結果がfalseの時に th:block のタグで囲まれた要素が出力されず非表示となります。
HTMLとして th:block のタグ自体は出力されません。
表示/非表示となるコンテンツを囲んでif文などの処理を組み込みます。
サンプルコードでは、if文の結果がfalseの時に th:block のタグで囲まれた要素が出力されず非表示となります。
②th:if="...", th:unless="..."
分岐を行うための構文です。
サンプルコードでは、ログインしたユーザーのステータスについて以下の内容で記述されています。
サンプルコードでは、ログインしたユーザーのステータスについて以下の内容で記述されています。
1.if="${siteClient.record[フィールドID]?.id eq 1 OR siteClient.record[フィールドID]?.id eq 2}"
もし siteClient.record[フィールドID]?.id(ステータス)が 1 または、2 に等しければ、実行される
もし siteClient.record[フィールドID]?.id(ステータス)が 1 または、2 に等しければ、実行される
2.if="${siteClient.record[フィールドID]?.id eq 3}"
もし siteClient.record[フィールドID]?.id(ステータス)が 3 に等しければ、実行される
もし siteClient.record[フィールドID]?.id(ステータス)が 3 に等しければ、実行される
3.unless="${siteClient.record[フィールドID]?.id eq 1 OR siteClient.record[フィールドID]?.id eq 2 OR siteClient.record[フィールドID]?.id eq 3}"
もし siteClient.record[フィールドID]?.id(ステータス)が 1,2,3 のいずれでもなければ、実行される
もし siteClient.record[フィールドID]?.id(ステータス)が 1,2,3 のいずれでもなければ、実行される
③${...}
変数式を表す記述です。
${...} の中で、値の保持、比較などをおこなうことができます。
②の if文 の場合、その構造は
${...}の中で複数の条件式を組み合わせることが可能です。
${...} の中で、値の保持、比較などをおこなうことができます。
②の if文 の場合、その構造は
th:if="${...}"となっていますが、
${...}の中で複数の条件式を組み合わせることが可能です。
④siteClient.record[XX]
認証エリアにログインしたユーザーの情報を取得・表示するための SPIRAL ver.2 独自の記述です。
XXには、フィールドID※を設定ください。
セレクト項目の場合、末尾に
また末尾の記載を
※フィールドIDの確認場所はこちらをご参考ください。
XXには、フィールドID※を設定ください。
セレクト項目の場合、末尾に
?.labelを付与してラベル名を表示します。
また末尾の記載を
?.idにして登録されているセレクトIDとして使用します。
※フィールドIDの確認場所はこちらをご参考ください。
⑤演算子
イコールを表現するのに
Thymeleafの条件式に「<」「>」などは使用できません。
設定箇所による書き方の違いを防ぐため、文字列エイリアスの使用を推奨しています。
eq、または を表現する際に
ORで記述します。
Thymeleafの条件式に「<」「>」などは使用できません。
設定箇所による書き方の違いを防ぐため、文字列エイリアスの使用を推奨しています。
演算子 | 文字列エイリアス |
== | eq |
!= | ne |
> | gt |
>= | ge |
< | lt |
<= | le |
&& | AND |
|| | OR |
具体的な活用例
スターターデモから実際の活用例をご紹介します。
「LINE会員アプリ」会員/非会員の各メニューの表示を制御
会員情報が未登録のステータスのユーザーには、会員情報の登録フォームブロックを表示し、
登録済みのステータスのユーザーには、会員情報変更ページと退会ページのメニューが表示する処理を設定しています。
詳しくはこちらをご参考ください。
登録済みのステータスのユーザーには、会員情報変更ページと退会ページのメニューが表示する処理を設定しています。
詳しくはこちらをご参考ください。
「Web申請アプリ」事務局差し戻し修正画面の表示を制御
申請内容に不備があった場合の差し戻し修正ページに、ステータスが「事務局差戻し」のユーザーにのみ内容修正用のフォームブロックを表示する処理を設定しています。
詳しくはこちらをご参考ください。
詳しくはこちらをご参考ください。
「キャンペーン応募アプリ」住所入力欄の表示を制御
当選商品の配送先住所を入力するページに、配送先住所の入力後のユーザーには送信ボタンを非表示にする処理を設定しています。
詳しくはこちらをご参考ください。
詳しくはこちらをご参考ください。
最後に
Thymeleafを活用して様々なアプリケーションを設定いただければと思います!
また、他にもこういう事やりたい などあれば、下記の「コンテンツに関しての要望はこちら」からご連絡ください。
また、他にもこういう事やりたい などあれば、下記の「コンテンツに関しての要望はこちら」からご連絡ください。