文法
<switch value="#{@foo}">
<case value="1" />
(要素)
<case value="2" />
(要素)
<else />
(要素)
</switch>
属性
(必須)value="文字列"
上の例では、
変数@fooの値が1なら最初の<case>ブロックを、2なら次の<case>ブロックを、どちらでもないなら<else>ブロックを評価します。
<switch>は
<if>と同じく
ブロックを発生させるタグです。
<case/>
<else/>
のいずれかのタグの直後から
<case/>
<else/>
</switch>
のいずれかのタグの直前までが1つの分岐ブロックです。
<switch>自身はブロックの開始タグではありません。
<switch>が見つかった場合、まずvalue属性を評価し、有効な値が得られた場合は次のブロックを探します。有効な値が得られなかった場合は</switch>まで解釈をスキップします。
有効でない値は、例えば
式展開で
定義されていない
変数を使った場合などに発生します。
<case>が見つかると、これと先の<switch>のvalue属性を
==比較します。評価結果がTRUE(等しい)ならそのブロックを解釈し、</switch>まで解釈をスキップします。FALSE(等しくない)ならブロックの終わりまで解釈をスキップします。
<else>が見つかると、そのブロックを解釈します。
1つの<switch>要素内で解釈されるブロックは
いずれか1つだけです。
<else>が無く、<switch>のvalueがどの
<case>のvalueとも一致しない場合、<switch>の要素は全て解釈されません。
<switch>による条件分岐は、本質的には
<if>によるものと同じです。
文法欄にある記述例は、
<if>を用いて、
<if condition="#{@foo == 1}">
(要素)
<else condition="#{@foo == 2}" />
(要素)
<else />
(要素)
</if>
と記述しても同じことです。
<switch>は1種類の値と別の値とを順次比較するため、例えば1つの
@randの値によって枝分かれさせたい場合に記述を簡素にすることができます。
要素
分岐構文
親要素
最終更新:2015年01月13日 17:41