【问题标题】:Group visibility of rich:columns inside rich:datatablerich:datatable 内的rich:columns 的组可见性
【发布时间】:2011-08-04 01:02:23
【问题描述】:

我在 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 中呈现,即使我删除了“rendered”条件也是如此。我尝试了 a4j:outputPanel 和其他几个,但没有一个工作。

我可以移除面板并将条件放在每一列中,但那将是我要做的最后一件事。

为什么不工作?问候。

【问题讨论】:

  • 除了datatable -> dataTable 红鲱鱼,语法看起来不错。确定您的真实代码中的列内也有面板组?
  • 我的错,表中的代码太多以至于我误认为错误。未能显示的 panelGroup 是包含该列的那些,而不是其他方式,我将编辑代码以反映问题。
  • 嗯,这解释了问题。面板组不能是表的直接子级。

标签: jsf datatable richfaces


【解决方案1】:

事实上,我很确定&lt;rich:dataTable&gt; 将忽略任何不是UIColumnColumn 对象的直接子对象(我刚刚查看了org.richfaces.component.ColumnsIterator,由UIDataTable 使用)。

换句话说,&lt;rich:dataTable&gt; 将简单地忽略您的&lt;h:panelGroup&gt;,无论rendered 属性值何时是。

为了解决你的问题,我看到了三个解决方案:

  1. 在每个&lt;rich:column&gt; 上放置一个rendered 属性;
  2. 使用&lt;rich:columnGroup&gt; 组件;
  3. 定义两个&lt;rich:dataTable&gt;,一个在#{condition}被评估为true时显示,另一个在false时显示。

【讨论】:

  • 1) 和 3) 在我的特定情况下将是一场噩梦,尤其是 3) 因为数据表中有一个固定列的列表,并且重复代码的数量太多了。我已经使用了columGroup,但无论我做什么,它都会打印一个 并且内容会移动到下一行,甚至在另一列内。
猜你喜欢
  • 2013-07-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-28
  • 2020-08-29
  • 2015-11-24
  • 2012-12-04
  • 2019-02-11
相关资源
最近更新 更多