primefaces p:commandButton action在p:对话框中不重定向

时间:2011-08-11 15:44:08

标签: jsf primefaces

我有一个命令按钮,其中包含一个返回要重定向到的新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返回一个指向另一个页面的字符串,但该页面永远不会加载,对话框就会消失,就是这样。

2 个答案:

答案 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(),因为我没有将其定义。