Групповая видимость rich: столбцы внутри rich: datatable - PullRequest
1 голос
/ 12 апреля 2011

У меня есть набор столбцов внутри 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, даже когда я удаляю условие «render». Я попытался с a4j: outputPanel и несколько других, но ни один не работал.

Я мог бы снять панель и поставить условие в каждом столбце, но это было бы последним, что я бы сделал.

Почему не работает? С уважением.

1 Ответ

0 голосов
/ 13 апреля 2011

На самом деле, я почти уверен, что <rich:dataTable> будет игнорировать любые прямые потомки, которые не являются UIColumn или Column объектами (я только что посмотрел на org.richfaces.component.ColumnsIterator, используемый UIDataTable).

Другими словами, ваш <h:panelGroup> будет просто игнорироваться <rich:dataTable>, независимо от значения атрибута rendered.

Чтобы решить вашу проблему, я вижу три решения:

  1. Поместите атрибут rendered в каждый <rich:column>;
  2. Используйте компонент <rich:columnGroup>;
  3. Определите два <rich:dataTable>, один дисплей, когда #{condition} оценивается как true, другой - false.
...