在p:对话框中,primefaces p:commandButton动作不重定向



我有一个带有操作的命令按钮,该操作返回一个要重定向到的新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返回一个指向另一个页面的字符串,但是该页面永远不会加载,对话框将消失,仅此而已。

未经测试,但也许这有帮助:

在这里查看primefaces文档(3.3版):http://primefaces.googlecode.com/files/primefaces_users_guide_3_3.pdf

在第150页,它说:

小心使用appendToBody,因为页面定义和html dom会有所不同例如,如果dialog位于h:form组件中,并且在浏览器上启用了appendToBody对话将脱离形式,并可能导致意想不到的结果。在本例中,在内部嵌套一个表单一个对话框。

将对话框嵌套到表单元素中对我来说有点奇怪。

嘿,你能试着移除modal="true"吗?我试过了,它在我身上起作用了。

哦,是的,我还必须删除showOptions()因为我没有定义它

最新更新