1

可以根据 c:if 限制数据表中的数据显示。

让我们说

现在显示的输出:

Startdate     end date   status    Edit

2012-02-02    2012-03-02 Waiting   edit

2012-02-03    2012-03-04 Approved   edit

预期输出:

Startdate     end date   status    Edit

2012-02-02    2012-03-02 Waiting   edit

2012-02-03    2012-03-04 Approved  

当状态为 Waiting 时,应显示编辑链接。当它被拒绝或批准时,不应显示编辑链接

这是我的 Xhtml 文件。

           <h:form>
      <h:dataTable value="#{employeeleave}" var="e"
            styleClass="order-table"
            headerClass="order-table-header"
            rowClasses="order-table-odd-row,order-table-even-row"
            columnClasses="order-table-odd-column,order-table-even-column"
        >

        <h:column>
            <f:facet name="header">
                Start Date
            </f:facet>
                #{e.startDate}
        </h:column>

        <h:column>
            <f:facet name="header">
                End Date
            </f:facet>
                #{e.endDate}
        </h:column>

        <h:column>
            <f:facet name="header">
                Reason
            </f:facet>
                #{e.reason}
        </h:column>

        <h:column>
            <f:facet name="header">
                Status
            </f:facet>
                #{e.status}
        </h:column>
            <h:column>
        <f:facet name="header">
            Edit
        </f:facet>
        <c:if test="${e.status == 'Waiting'}">
        <p:commandLink value="Edit" action="editLeave" id="editleave" >
        <f:setPropertyActionListener value="#{e}" target="#{employeeDetails.employeeLeaveSelected}" />
        </p:commandLink>
        </c:if>
        </h:column>
    </h:dataTable>  
    </h:form>
4

1 回答 1

2

JSTL 标记不能那样工作。它们在视图构建期间运行,而不是在您似乎期望的视图渲染期间运行。在视图构建期间不可用,因此在您的特定情况下始终${e}解析null.

您需要改用 JSF 组件的rendered属性。

代替

<c:if test="${e.status == 'Waiting'}">
    <p:commandLink value="Edit" action="editLeave" id="editleave" >
        <f:setPropertyActionListener value="#{e}" target="#{employeeDetails.employeeLeaveSelected}" />
    </p:commandLink>
</c:if>

经过

<p:commandLink value="Edit" action="editLeave" id="editleave" rendered="#{e.status == 'Waiting'}">
    <f:setPropertyActionListener value="#{e}" target="#{employeeDetails.employeeLeaveSelected}" />
</p:commandLink>

也可以看看:

于 2012-07-18T15:27:20.200 回答