簡単な要件があります。私の列の数<tr:table/>
は動的です。someBean.features
レンダリングされる列の数を決定するオブジェクトのリストがあります。
次の図は、私の要件を明確にする必要があります。
提供されたコードでは<c:forEach/>
、JSF 環境で使用すると明らかに問題を引き起こす JSTL タグが使用されていました。彼らは次のようなことをしました:
<tr:table value="#{someBean.values}">
<tr:column headerText="Name">
<tr:outputText value="#{someBean.name}"/>
</tr:column>
<c:forEach var="col" items="#{someBean.features}">
<tr:column headerText="Column-#{col.id}">
<tr:outputText value="#{col.name}"/>
</tr:column>
</c:forEach>
</tr:table>
しかし、上記のコードをプロファイリングすると、上記someBean.getValues
のタグへの入力であるメソッド<tr:table/>
が約 20 回ではなく、数千回呼び出されていました<c:forEach/>
。<tr:*/>
レンダリング時間タグも同様です。
だから、これが私がやろうとしていることです(に置き換え<c:forEach/>
て<tr:iterator/>
ください:
<tr:table value="#{someBean.values}">
<tr:column headerText="Name">
<tr:outputText value="#{someBean.name}"/>
</tr:column>
<tr:iterator var="col" value="#{someBean.features}">
<tr:column headerText="Column-#{col.id}">
<tr:outputText value="#{col.name}"/>
</tr:column>
</tr:iterator>
</tr:table>
しかし、何らかの理由で、<tr:iterator/>
が a の中に配置されるのを好まないようで<tr:table/>
、決して実行されません。
解決策、ヒント、ガイドラインは大歓迎です。
ああ、私たちは MyFaces Trinidad 1.0.13 実装で JSF 1.1 を使用しています。
ありがとう。