Jsf rich:datatable中rich:columns的组可见性

Jsf rich:datatable中rich:columns的组可见性,jsf,datatable,richfaces,Jsf,Datatable,Richfaces,我在rich:datatable中有一组列,这些列基于一些预处理的条件是可见的。我想做的一个例子是: <rich:datatable value="tableList" var="list"> <h:panelGroup rendered="#{condition}"> <rich:column> Component <rich:column> <rich:c

我在rich:datatable中有一组列,这些列基于一些预处理的条件是可见的。我想做的一个例子是:

<rich:datatable value="tableList" var="list">

    <h:panelGroup rendered="#{condition}">
        <rich:column>
            Component
        <rich:column>

        <rich:column>
            Component
        <rich:column>
    </h:panelGroup>

    <h:panelGroup rendered="#{not condition}">
        <rich:column>
            Component
        </rich:column>
    </h:panelGroup>

</rich:datatable>
这里的问题是,panelGroup标记永远不会在rich:datatable中呈现,即使我删除了呈现条件。我试过使用a4j:outputPanel和其他一些产品,但都不起作用

我可以移除面板并在每一列中添加条件,但这将是我最不愿意做的事情


为什么不工作?关于。

事实上,我非常确定,将忽略任何不是UIColumn或Column对象的直接子级。我刚刚查看了UIDataTable使用的org.richfaces.component.ColumnsIterator

换句话说,无论渲染的属性值是什么时候,都会被忽略

为了解决您的问题,我看到了三种解决方案:

在每个属性上放置一个渲染属性; 使用组件; 定义两个,一个在{condition}求值为true时显示,另一个在求值为false时显示。
除了datatable->datatable的红鲱鱼之外,语法看起来还不错。确定您的真实代码中的列中也有panelgroup吗?糟糕,表中的代码太多了,我误认为是错误。未能显示的panelGroup是包含该列的,而不是相反,我将编辑代码以反映问题。这就解释了问题。panelgroup不能是表的直接子级。在我的特殊情况下,1和3将是一场噩梦,尤其是3,因为datatable中有一个固定列列表,重复代码的数量太多了。我已经和columGroup合作过了,但不管我做什么,它都会打印一个文件,并且内容会移动到下一行,甚至在另一列中。