我有一个包含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表,其中的行如果值为空则不会呈现。但是我注意到如果值为空,我会得到很小的空格:
我如何解决这个问题?
答案 0 :(得分:3)
是的,这将是您的代码中的预期行为,因为它只是阻止呈现<<h:outputText>
而不是<tr>
或<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>