0

我有一个具有 30 个属性的 Java 对象。我从数据库中填充对象。我只想显示不为空的值。

<table>
    <col width="280"/><col width="130"/>

    <ui:repeat var="ud" value="#{TreeViewController.componentData}">

        <tr>
            <td>
                <h:outputText value="componentStatsId" rendered="#{ud.componentStatsId != 0}"/>
            </td>
            <td>
                <h:outputText value="#{ud.componentStatsId}" rendered="#{ud.componentStatsId != 0}"/>
            </td>
        </tr>

        .......... and 40 more table rows

    </ui:repeat>
</table>

我测试了创建简单的 JSF 表,其中如果值为空,则不会呈现这些行。但我注意到,如果值为空,我会得到很小的空格:

在此处输入图像描述

我该如何解决这个问题?

4

1 回答 1

3

是的,这将是您的代码的预期行为,因为它只是阻止渲染<<h:outputText>但不是<tr>nor<td>组件。

为了解决这个问题,你应该使用属性来<ui:fragment>控制<tr><td>渲染rendered

<ui:repeat var="ud" value="#{TreeViewController.componentData}">
    <ui:fragment rendered="#{ud.componentStatsId != 0}">
        <tr>
            <td>
                componentStatsId
            </td>
            <td>
                #{ud.componentStatsId}
            </td>
        </tr>
    </ui:fragment>
    <!-- .......... and 40 more table rows -->
    <ui:fragment rendered="#{ud.componentTypeId != 0}">
        <tr>
            <td>
                ...
            </td>
            <td>
                ...
            </td>
        </tr>
    </ui:fragment>
</ui:repeat>
于 2013-02-12T21:38:22.360 回答