Я использую Primefaces 3.5. У меня есть следующий код:Галерея обновлений PrimeFaces при изменении SelectOneMenu
<p:panel id="containerSelectionPanel" header="Container Selection">
<h:form id="containerSelectionForm">
<p:selectOneMenu value="#{manageContainersBean.selectedContainer}">
<f:selectItems value="#{manageContainersBean.containerList}" var="container" itemLabel="#{container.name}" />
<p:ajax update=":componentSelectionPanel" />
</p:selectOneMenu>
</h:form>
</p:panel>
<p:panel id="componentSelectionPanel" header="Component Selection">
<h:form id="componentSelectionForm">
<p:galleria id="componentGallery" var="component"
value="#{manageContainersBean.selectedContainer.components}">
<p:graphicImage value="#{component.preview}" title="#{component.name}" alt="#{component.name}"></p:graphicImage>
</p:galleria>
</h:form>
</p:panel>
При запуске сайта галерея отображается правильно. Однако, если я изменю выбор в SelectOneMenu
, галерея просто пуста (ничего не отображается, панель «Выбор компонента» пуста).
Обновление по запросу AJAX. Список компонентов извлекается после обновления, предварительный просмотр, а также имя запрашиваются по желанию. Тем не менее, HTML код, сгенерированный для обновленной галереи содержит очень мало строк, гораздо меньше, чем при загрузке галереи изначально, смотрите здесь:
<ul class="ui-galleria-panel-wrapper">
<li class="ui-galleria-panel ui-helper-hidden">
<img id="j_idt28" alt="Have lunch" title="Have lunch">
</li>
<li class="ui-galleria-panel ui-helper-hidden">
<img id="j_idt28" alt="Have brunch" title="Have brunch">
</li>
</ul>
Как можно видеть, вновь выбранный контейнер неправдоподобный, хотя и изображения несколько обновлены (но inital gallery содержит больше кода).
Я уже пробовал обновлять полную форму, а не только галерею: тот же результат. Я попытался переместить галерею из самой формы: тот же результат. Я попытался использовать обновление Javascript с консоли браузера, как было проверено here, ничего не происходит.
У кого-то есть решение этой проблемы?
Обновление: Я проверил ответ сервера, который получает сообщение, когда галерея должна быть обновлена. Он содержит точно такой же код, как и начальный отклик (когда работает галерея), поэтому во время рендеринга ответа должно быть что-то не так с JSF. Но до сих пор не знаю, как справиться с этим.
Редактировать: общая вещь: форма не должна обновляться, а полная панель.
С уважением, bobbel
не работает .... –
@IrfanNasim: может быть, PF - сумасшедший, неустойчивый мир. К сожалению, я уже давно не работаю с Java, поэтому я не могу вам помочь. Если вы считаете, что принятие должно быть удалено или вы знаете, как его решить, просто скажите мне. Но также может быть, что только в вашей конкретной среде это не сработает или только в моей конкретной среде это действительно сработало. Трудно сказать. – bobbel