如何通过未通过渲染属性渲染的组件来消除空白区域?
我想在dataTable中显示对象列表,并按照他们拥有的属性对它们进行排序。我喜欢这样: 查看plaincopy到clipboardprint?
<t:dataTable value="#{someBean.values}" var="value">
<h:column>
<f:facet name="header">
<t:outputText value="X" />
</f:facet>
<h:panelGroup rendered="#{value.property eq 'X'}">
<!-- some stuff -->
</h:panelGroup>
</h:column>
<h:column>
<f:facet name="header">
<t:outputText value="Y" />
</f:facet>
<h:panelGroup rendered="#{value.property eq 'Y'}">
<!-- some stuff -->
</h:panelGroup>
</h:column>
</t:dataTable>
由于渲染的东西,它每行只显示一个项目。我怎么能避免这个?我在其他场合也弄明白了......
谢谢!
答案 0 :(得分:2)
很明显,每行显示datatable
一个项目。
你可以更好地拥有两个不同的数据表,一个用于x的渲染和用于y的其他渲染,并相应地调整css
,看起来像是同一个表的两列。或者使用richfaces,<rich:subTable>
可以帮助您,例如在一个subTable
中有两个dataTable
答案 1 :(得分:1)
使用单个列并在那里渲染。
<t:dataTable value="#{someBean.values}" var="value">
<h:column>
<f:facet name="header">
<t:outputText value="#{value.property}" />
</f:facet>
<h:panelGroup rendered="#{value.property eq 'X'}">
<!-- some stuff -->
</h:panelGroup>
<h:panelGroup rendered="#{value.property eq 'Y'}">
<!-- some stuff -->
</h:panelGroup>
</h:column>
</t:dataTable>