JSF:渲染属性导致的空白空间

时间:2011-05-26 08:41:42

标签: jsf rendered-attribute

如何通过未通过渲染属性渲染的组件来消除空白区域?

我想在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>  

由于渲染的东西,它每行只显示一个项目。我怎么能避免这个?我在其他场合也弄明白了......

谢谢!

2 个答案:

答案 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>