我有一个命令按钮,其中包含一个返回要重定向到的新URL的操作。当这个命令按钮不在p:对话框内部时,所有工作都按照我的预期工作,但是当我在对话框中输入命令按钮时,对话框就会关闭并让我在同一页面上。
<h:form id="reviewForm">
<h:messages id="saveMsg" showDetail="true" globalOnly="true"/>
<p:panel style="text-align: center">
<p:commandButton type="button" value="Submit" onclick="showOptions(); areYouSureVar.show();" />
</p:panel>
<p:dialog id="areYouSure" widgetVar="areYouSureVar" resizable="false" width="400" modal="true" header="Are you sure you want to continue?">
<p:panel style="text-align: center">
<p:commandButton id="submit" ajax="false" value="Submit" action="#{mybean.myaction}" oncomplete="areYouSureVar.hide();"/>
<p:commandButton type="button" value="Cancel" onclick="areYouSureVar.hide();"/>
</p:panel>
</p:dialog>
</h:form>
mybean.action返回一个指向另一个页面的字符串,但该页面永远不会加载,对话框就会消失,就是这样。
答案 0 :(得分:1)
未经测试但也许这会有所帮助:
在此处查看primefaces文档(版本3.3):http://primefaces.googlecode.com/files/primefaces_users_guide_3_3.pdf
在第150页,它说:
小心使用
appendToBody
,因为页面定义和html dom会有所不同 例如,如果对话框在h:form组件中,并且在浏览器上启用了appendToBody 对话框不在形式之内,可能会导致意外结果。在这种情况下,将表单嵌套在里面 对话框。
将对话框嵌入到表单元素中对我来说有点奇怪。
答案 1 :(得分:0)
嘿,您可以尝试删除modal="true"
吗?我尝试了它,它适用于我的情况。
哦,我也必须删除showOptions()
,因为我没有将其定义。