Primefaces подтверждают исчезновение диалога почти мгновенно - PullRequest
8 голосов
/ 02 февраля 2012

Я разрабатываю приложение в JSF 2.0.Я также использую библиотеку компонентов Primefaces.У меня проблема с p: verifyDialog Primefaces.Как только я хочу показать ap: verifyDialog, он снова исчезает почти мгновенно.Самое странное, что эта проблема возникает только с приложением, которое развернуто на сервере GlassFish на работе.Когда я загружаю тот же самый файл .war на сервер GlassFish на моем домашнем компьютере или когда я запускаю приложение в Netbeans, эта проблема не возникает.Я действительно не могу выяснить, в чем причина этой проблемы.Также я не смог найти никакой информации об этом в Google.Любая помощь будет принята с благодарностью!Это мой код:

<h:commandButton value="Verwijderen" onclick="bezoekConfirmation.show()" styleClass="verwijderKnopBig" rendered="#{pageRenderController.canWriteBezoekenMobiele}" />
<p:confirmDialog message="Bent u zeker dat u dit bezoek wilt verwijderen?" closable="false"
     header="Bezoek verwijderen" severity="alert" widgetVar="bezoekConfirmation">
     <p:commandButton value="Ja" oncomplete="bezoekConfirmation.hide()" action="#{bezoekenMobieleController.deleteBezoek}" ajax="false" />
     <p:commandButton value="Nee" onclick="bezoekConfirmation.hide()" type="button" />
</p:confirmDialog>

Ответы [ 3 ]

16 голосов
/ 02 февраля 2012

Нажатие на кнопку приведет к отправке. Появится диалоговое окно, и страница сразу же перезагрузится.

Изменить это:

bezoekConfirmation.show()

к этому:

bezoekConfirmation.show(); return false;

Странно, что ваша версия работает на вашем компьютере дома.

4 голосов
/ 04 марта 2013

Решение с return false; будет работать, только если вы не собираетесь вызывать метод или устанавливать переменную.

В этом случае просто используйте oncomplete="dialog.show();" вместо onclick="dialog.show();" Это пройдет через вызов метода.


Пример:

Учитывая, что следующий код находится в некоторой таблице данных, вы можете иметь

<p:commandButton value="edit" update=":dialog" oncomplete="dialog.show();">
 <f:setPropertyActionListener target="#{bean.field}" value="#{_item}" />
</p:commandButton>

или позвоните установщику напрямую

<p:commandButton value="edit" update=":dialog" oncomplete="dialog.show();" action="bean.setField(_item)">
</p:commandButton>
1 голос
/ 09 июня 2012
<h:commandButton value="Verwijderen" onclick="bezoekConfirmation.show()" styleClass="verwijderKnopBig" rendered="#{pageRenderController.canWriteBezoekenMobiele}" />
<p:confirmDialog message="Bent u zeker dat u dit bezoek wilt verwijderen?" closable="false"
     header="Bezoek verwijderen" severity="alert" widgetVar="bezoekConfirmation" appendToBody="true">
<p:commandButton value="Ja" oncomplete="bezoekConfirmation.hide()" action="#{bezoekenMobieleController.deleteBezoek}" ajax="false" />
     <p:commandButton value="Nee" onclick="bezoekConfirmation.hide()" type="button" />
</p:confirmDialog>

appendToBody="true" преодолеет вашу проблему

...