この例は、JSF に関する本からのものです。演習は、次の Facelets コードをリファクタリングして、<c:if>
とを削除することfn:toUpperCase()
です。の使用<c:forEach>
が許可されます。
#{myBean.numbers}
戻り値String["one","two","three"]
この本は Java ではなく JSF に関するものなので、既存の Java コードには触れないでください。しかし、Facelets だけでこれを行う別の方法は考えられません。
<c:forEach var="item" items="#{myBean.numbers}">
<c:if test="#{not fn:endsWith(item,'o')}">
#{item}
</c:if>
<c:if test="#{fn:endsWith(item,'o')}">
#{fn:toUpperCase(item)}
</c:if>
</c:forEach>
私が考えることができるのは、条件付きで使用するコンバーターを使用することだけですが、それでもの使用を許可する必要があるString#toUpperCase()
理由がわかりません。<c:forEach>
<ui:repeat var="item" value="#{myBean.numbers}">
<h:outputText value="#{item}" converter="conditionalConverter"/>
</ui:repeat>
これを行うための「Faceletsの方法」はありますか(そして、まだ使用する必要があります<c:forEach>
)?
更新:
代わりに<c:if>
eg を使用できますが<h:outputPanel>
、それrendered
は -attribute ですが、Java を使用しないfn:toUpperCase()
.
学習目的でのみお願いしています。<ui:repeat>
コンバーターを使用したソリューションが最もクリーンであり、JSF の使用方法を最もよく表していると思います。あなたもそう思いますか?