条件列渲染

时间:2013-09-19 23:17:48

标签: jsf jsf-2

我正在使用jsf 2.0。我有这个数据表

<h:dataTable value="#{agreement.licenseProducts}"
    var="licenseProduct"
    styleClass="pnx-table pnx-table-bdr pnx-table-unstyled mp-license-info">
    <h:column>
        <f:facet name="header">
            <h:outputText value="Product" />
        </f:facet>
        <h:outputText value="#{licenseProduct.description}" />
    </h:column>
    <h:column>
        <f:facet name="header">
            <h:outputText value="Serial Number" />
        </f:facet>
        <h:outputText value="#{licenseProduct.serialNumber}" />
    </h:column>
    <h:column>
        <f:facet name="header">
            <h:outputText value="#{agreement.labelForConcurrency}" />
        </f:facet>
        <h:outputText value="#{licenseProduct.concurrent}" />
    </h:column>
    <ui:fragment rendered="#{agreement.managementTool != 'NONE'}">
        <h:column>
            <f:facet name="header">
                <h:outputText value="#{agreement.labelForLicenseType}" />
                <span class="pnx-icon-right pnx-icon-info pnx-tooltip">
                    <div class="pnx-tooltip-content">
                        <h:outputText value="Tooltip content" />
                    </div>
                </span>
            </f:facet>
            <h:outputText value="#{licenseProduct.licenseBase}" />
        </h:column>
    </ui:fragment>
    <h:column>
        <f:facet name="header">
            <h:outputText value="#{agreement.labelForSeatCount}" />
        </f:facet>
        <h:outputText value="#{licenseProduct.seats}" />
    </h:column>
</h:dataTable>

问题是ui:fragment部分无效。无论属性的值是什么,它都不会显示列。

有什么想法吗?

- 编辑 -

以防万一,我有其他ui:依赖于同一属性的片段,并且它们会根据属性的值正确呈现。我确定它与dataTable和列有关。

1 个答案:

答案 0 :(得分:2)

rendered标记的<h:column>属性只执行作业:

<h:column rendered="#{agreement.managementTool != 'NONE'}">
       ...        
</h:column>