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')}.