Primefaces确认对话几乎立即消失

时间:2012-02-01 20:25:24

标签: jsf jsf-2 primefaces

我正在使用JSF 2.0开发一个应用程序。我也在使用Primefaces组件库。我对Primefaces的p:confirmDialog有问题。一旦我想要显示一个p:confirmDialog,它几乎立即消失。最奇怪的是,只有部署在GlassFish Server上的应用程序才会出现此问题。当我在家里的计算机上将相同的.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 个答案:

答案 0 :(得分:16)

点击按钮将导致提交。出现对话框,并立即重新加载页面。

改变这个:

bezoekConfirmation.show()

到此:

bezoekConfirmation.show(); return false;

你的版本在家里的电脑上工作真的很奇怪。

答案 1 :(得分:4)

只有在您不打算调用方法或设置变量时,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>

或直接致电setter

<p:commandButton value="edit" update=":dialog" oncomplete="dialog.show();" action="bean.setField(_item)">
</p:commandButton>

答案 2 :(得分:1)

<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"将克服您的问题