3.10 テンプレート・ディレクティブの使用
テンプレート・ディレクティブを使用して、置換文字列をサポートする属性の処理方法を制御します。
テンプレート・ディレクティブは、カード・リージョンおよび対話グリッド・リージョンの特定の属性でのみサポートされています。これらのディレクティブは、クライアント側の置換の一部として処理されます。属性でテンプレート・ディレクティブがサポートされているかどうかがわかるように、ページ・デザイナのヘルプに「テンプレート・ディレクティブのサポート」というテキストが表示されます。ディレクティブ構文の詳細は、Oracle Application Express JavaScript APIリファレンスのapex.util.applyTemplateを参照してください。
ノート:
大カッコで囲まれた構文の説明テキストはオプションです。大カッコは実際には入力しません。大文字のテキストは、説明で説明されている内容を表します。
3.10.1 if条件ディレクティブ
構文
{if [!]NAME/}
TRUE_TEMPLATE_TEXT
{elseif [!]NAME2/}
ELSE_TRUE_TEMPLATE_TEXT
{else/}
FALSE_TEMPLATE_TEXT
{endif/}
アイテムまたは列に値があるかどうかに基づいてテキストを条件付きで表示するには、if
ディレクティブを使用します。NAME
はアイテムまたは列の名前です。列またはアイテムの値がtrueである場合、次のテキストが出力されます。空の文字列であるか、F
、N
または0
である場合、値はfalseです。falseでない値はすべてtrueです。NAME
が感嘆符(!)で始まっている場合は、値がtrueではなくfalseであるときに、次のテキストが出力されます。
ゼロ個以上のelseif
ディレクティブを指定できます。else
ディレクティブはオプションです。trueである最初のif
またはelseif
ディレクティブの後のテキストが出力されます。trueであるif
またはelseif
がない場合は、else
ディレクティブの後のテキスト(ある場合)が出力されます。
Example
カード・レポートに、DESCRIPTION
という名前の列が含まれています。次の「HTML式」属性は、null (空の文字列)でない場合は説明を表示し、それ以外の場合は「No description」を表示します。
{if DESCRIPTION/}&DESCRIPTION.{else/}No description.{endif/}
親トピック: テンプレート・ディレクティブの使用
3.10.2 case条件ディレクティブ
構文
{case NAME/}
{when STRING1/}
TEMPLATE_TEXT1
{when STRING2/}
TEMPLATE_TEXT2
{otherwise/}
TEMPLATE_TEXT
{endcase/}
アイテムまたは列の値に基づいてテキストを表示するには、case
ディレクティブを使用します。NAME
はアイテムまたは列の名前です。値がそれぞれのwhen
ディレクティブの後の文字列と比較され、それらが等しい場合、次のテキストが出力されます。一致するwhen
ディレクティブがない場合は、otherwise
ディレクティブの後のテキスト(存在する場合)が出力されます。比較の前に、値とそれぞれの文字列から先頭と末尾の空白が切り捨てられます。この比較では、大文字と小文字が区別されます。
Example
サンプルのEMP
表を使用する次の例では、JOB
に応じて報酬が異なる方法で表示されます。営業担当については、給与と歩合の両方が表示されます。社長については、給与のかわりに「--」が表示され、他のすべてのジョブについては、給与のみが表示されます。
{case JOB/}
{when SALESMAN/}
&SAL. (&COMM.)
{when PRESIDENT/}
--
{otherwise/}
&SAL.
{endcase/}
親トピック: テンプレート・ディレクティブの使用
3.10.3 loopディレクティブ
構文
{loop ["SEP"] NAME/}
TEMPLATE_TEXT
{endloop/}
複数値(文字区切り)のアイテムまたは列値でアイテムごとにテキストを1回ずつ繰り返すには、loopディレクティブ
を使用します。NAME
は、SEP
で指定された文字で区切られた複数の値を持つアイテムまたは列の名前です。デフォルトのセパレータは「:
」です。SEP
が複数の文字である場合は、正規表現として扱われます。
ループ内のテンプレート・テキストでは、次の置換記号を使用できます。
-
APEX$ITEM
- これは、リスト内の現在のアイテムの値です。 -
APEX$I
- これは、リスト内の現在のアイテムの1ベースの索引です。
Example
次の例は、apples,cherries,pearsのようなタグのカンマ(,)区切りリストを含むTAGS
という列を取り、それを、CSSを使用して適切にスタイル設定できるHTMLリストに変換します。
<ul class="tags">{loop "," TAGS/}
<li class="tag-item">&APEX$ITEM.</li>
{endloop/}</ul>
親トピック: テンプレート・ディレクティブの使用