0

ステートメントmod内の式を評価するのが難しい。<c:if>

<af:forEach begin="0" end="2" step="1" var="col" varStatus="columnStatus">

    <c:set var="colIndex" value="${columnStatus.index}" scope="page" />

    <trh:cellFormat width="33%" valign="top" halign="center" id="cf1">        
        <af:panelGroupLayout id="pgl4" layout="vertical" halign="center">
            <af:iterator id="i1"
                    value="#{pageFlowScope.SkillsMatcherBean.candidateList}"
                    rows="#{pageFlowScope.SkillsMatcherBean.candidateListSize}"
                    var="row"
                    varStatus="rowStatus"
                    first="#{columnStatus.index}">
                <c:if test="${rowStatus.index mod 3 == '${columnStatus.index}'}">
                    <af:group id="g1">
                        <af:outputText value="index" id="ot6"/>
                        <af:outputText value=" #{rowStatus.index}" id="ot2"/>
                        <af:outputText value="end" id="ot7"/>
                        <af:outputText value=" #{columnStatus.index}" id="ot3"/>
                        <af:outputText value="count" id="ot13"/>
                        <af:outputText value=" #{rowStatus.index % 3}" id="ot5"/>
                        <af:outputText value="#{test}" id="ot1"/>
                        <af:spacer width="10" height="5" id="s1"/>
                    </af:group>
                </c:if>
            </af:iterator>
        </af:panelGroupLayout>
    </trh:cellFormat>
</af:forEach>

varStatus外側のループ変数をとして"columnStatus"、内側のループvarStatus変数をとして2つのイテレータループがあります"rowStatus"

columnStatus0〜2の
rowStatusスパン1〜18のスパン

上記の式では、rowStatus.index mod 3常にに評価され0ます。%とで試しましたmod

私はを使用してJdev 11.1.1.6います。

これを実現する方法を教えてください。

ありがとうございました

4

3 に答える 3

0

Frank は機能的には正しいですが、パフォーマンスに関してはそうではありません。af:forEach は反復ごとに UI コンポーネントを生成し、af:switcher はレンダリングが false の場合でもサブツリーを含めます。そのため、彼の提案により UI ツリーのサイズが大きくなります。一般に、UI ツリーのサイズとそのページのすべてのアクションの応答サイズには相関関係があります。

于 2013-06-20T17:33:28.270 に答える
0

問題は af:iterator タグにあります。子にスタンプを付けます。つまり、その中の式を評価しません。af:iterator の代わりに af:forEach を使用します。違いは、af:iterator がコレクションで機能するのに対し、af:forEach はリストで機能することに注意してください。

また、c:if を使用する代わりに、af:switcher を使用して、コンポーネントのグループの表示状態を切り替えることもできます。JSTL と JSF doon は同じ要求動作を持たないため、ネイティブ JSF コンポーネントが優先されます。

フランク

于 2012-08-23T06:29:27.350 に答える
0

問題は、EL 式が常に false になることです。これは、数値を引用符内の文字列と比較するためです。

次のことを試してください。

  <c:if test="${rowStatus.index mod 3 == columnStatus.index}">
于 2013-06-20T21:12:26.853 に答える