Render rich:extendedDataTable

Мне нужно rich:popup это показывает rich:extendedDataTableи когда пользователь нажимает кнопку, popup должно быть показано, и extendedDataTable должен быть перерисован, вот код:

<rich:popupPanel id="popupId" show="false" modal="true">
    <h:form>
        <rich:extendedDataTable
            value="#{bean.list}"
            var="item" rows="5" id="table">
            <rich:column>
                <h:outputLabel value="#{item}" />
            </rich:column>
        </rich:extendedDataTable>

        <a4j:commandButton value="x" immediate="true"
            oncomplete="#{rich:component('popupId')}.hide(); return false;"/>
    </h:form>

</rich:popupPanel>


<h:form>
    <a4j:commandButton value="show"
        oncomplete="#{rich:component('popupId')}.show(); return false;"
        render="table" immediate="true" />
</h:form>

Первый раз нажимаю show он работает нормально, но когда я закрываю панель с X кнопку и нажмите еще раз show кнопка, extendedDataTable выглядит пустым (отображается, но выглядит пустым, см. изображение ниже).

поток

Проблема исправлена, если я добавляю пустой extendedDataTable перед popup, как это:

<rich:extendedDataTable />
<rich:popupPanel>
     ...

С rich:dataTable проблема не выходит, но мне нужно extendedDataTable,

И дополнительное поведение extrange - когда я изменяю размер браузера, данные появляются.

Платформа

  • RichFaces: 4.2.2. Финал
  • Весна: 3.1.1. РЕЛИЗ

ура

2 ответа

Решение

Использование onclick вместо oncomplete, ExtendedDataTable не отображается должным образом внутри невидимых элементов (это ошибка), поэтому popupPanel должен быть сделан видимым до перерисовки.

У меня была такая же проблема.

Я решил это не на 100% правильно:

<a4j:commandButton 
  value="show"
  action="#{actionForm.setShowEditor('true')}"
  oncomplete="javascript:location.reload(true)"/>

<a4j:region layout="block" rendered="#{actionForm.showEditor}" id="panelArea">
   <rich:popupPanel id="#{popupID}" modal="true" show="true" domElementAttachment="parent">
   ....
   tabel
   buttons
   ....
   </rich:popupPanel>
</a4j:region>

Всплывающее окно всегда отображается (show="true") внутри области a4j:. Но a4j:region отображается только в том случае, если переменная отображает popup = true.

Полное обновление страницы было в моем случае необходимо, потому что в противном случае мой ckeditor имел некоторые ошибки инициализации. Это также должно работать, если вы переопределяете регион a4j: только после того, как вы установили "#{actionForm.setShowEditor('true')}.

Другие вопросы по тегам