検索
カレンダー
2019年8月
« 4月    
 123
45678910
11121314151617
18192021222324
25262728293031
ブログメニュー
Amazon検索
キーワード:

Faceletsではc:タグとui:タグを混在しないほうがいいみたい

2010年3月2日

FaceletsではJSFのタグ(ui:repeat等)とJSTLのタグ(c:if等)が使えます。

ですが、評価されるタイミングが違うので混在すると思った通りに動かないことがあります。
JSFのタグはレンダリングの際に評価され、JSTLのタグはコンパイルの際に評価されるようです。

たとえば、以下のような書き方をしても、c:if タグの条件は思った通りに評価されません。

<ui:repeat var="member" value="#{members}">
    <c:if test="#{member.admin}"><span class="admin">ADMIN</span></c:if>
    <c:if test="#{!member.admin}">MEMBER</c:if>
    <br />
</ui:repeat>

ui:repeatの代わりにc:forEachを使うか、次のようにc:ifの代わりにui:fragmentを使えば同じタイミングで評価されます。

<ui:repeat var="member" value="#{members}">
    <ui:fragment rendered="#{member.admin}"><span class="admin">ADMIN</span></ui:fragment>
    <ui:fragment rendered="#{!member.admin}">MEMBER</ui:fragment>
    <br />
</ui:repeat>

コメントはまだありません »

コメントはまだありません。

TrackBack URL : http://www.meibinlab.jp/nishijima/archives/127/trackback

コメントする