有可能基于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
当状态为等待时,应显示编辑链接。当它被拒绝或批准时,则不应显示编辑链接
这是我的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>
答案 0 :(得分: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>