5

私は次のようなコードを書きました:

<p:column headerText="Edit" width="40" rendered="#{(leaveDetails.strLeaveStatus == 'Canceled') or (leaveDetails.strLeaveStatus == 'Availed')}">
    <p:commandLink actionListener="#{userLeaveBean.editAppliedLeave}" title="Edit" disabled="true" process="@this" update="leaveDataTable" immediate="false">
        <h:graphicImage url="resources/images/edit.JPG"/>
            <f:attribute name="userId" value="#{employee.name}"/>
            <f:attribute name="editFirstHalf" value="#{leaveDetails.strStartTiming}"/>
            <f:attribute name="editSecondHalf" value="#{leaveDetails.strEndTiming}"/>
            <f:attribute name="editFrom" value="#{leaveDetails.dtLeaveFromDate}"/>
            <f:attribute name="editTo" value="#{leaveDetails.dtLeaveToDate}"/>
            <f:attribute name="leaveId" value="#{leaveDetails.strLeaveId}"/>
    </p:commandLink>
</p:column>

しかし、レンダリングされた属性は条件に対して機能していません。論理演算子を使用して条件を機能させるにはどうすればよいですか?PrimeFaces 3.4.2 の使用

4

3 に答える 3

12

行ごとに列全体を条件付きでレンダリングすることはできません。これは論理的にまったく意味がありません。テーブルごとに条件付きでのみレンダリングできます。<p:column rendered>は、反復された行のプロパティに基づく条件を取ることはできません。親 Bean のプロパティに基づいた条件のみを取得できます。

現在反復されている行のセルのみを条件付きで非表示にする場合は、rendered属性を から<p:column><p:commandLink>または少なくとも<p:column>コンテンツ全体をラップするコンポーネント ( など)に移動するだけ<h:panelGroup>です。

または、列全体renderedを条件付きで非表示にする場合は、属性で使用されている条件<p:column>#{userLeaveBean}親 Bean に移動します。

于 2013-06-07T11:18:14.800 に答える