条件列渲染 [英] Conditional column rendering

查看:55
本文介绍了条件列渲染的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I'm working with jsf 2.0. I have this datatable

<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部分无法正常工作.无论该属性的值是什么,它都不会显示该列.

The problem is that the ui:fragment part is not working. No matter what the attribute's value is, it will NEVER show the column.

有什么想法吗?

-编辑-

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

Just in case, I have other ui:fragments that depend on that same attribute, and they do render correctly depending on the attribute's value. I'm sure it has to do with the dataTable and the columns.

推荐答案

<h:column>标签的rendered属性仅执行工作:

The rendered's attribute of <h:column> tag performs simply the job :

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

这篇关于条件列渲染的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆