Primefaces对话框框架:RequestContext.execute-Javascript调用两次
我想从对话框窗口的bean调用javascript,但它执行了两次 我使用RequestContext.getCurrentInstance().execute()方法。如果页面不是“对话框架”,但在外部页面对话框窗口中,javascript执行两次,则此方法非常有效 父页面:Primefaces对话框框架:RequestContext.execute-Javascript调用两次,javascript,primefaces,dialog,requestcontext,Javascript,Primefaces,Dialog,Requestcontext,我想从对话框窗口的bean调用javascript,但它执行了两次 我使用RequestContext.getCurrentInstance().execute()方法。如果页面不是“对话框架”,但在外部页面对话框窗口中,javascript执行两次,则此方法非常有效 父页面: <h:form id="welcomeform"> <p:commandButton value="Welcome" actionListener="#{welcome.openhello()}"
<h:form id="welcomeform">
<p:commandButton value="Welcome" actionListener="#{welcome.openhello()}" />
</h:form>
faces-config.xml文件:
<action-listener>org.primefaces.application.DialogActionListener</action-listener>
<navigation-handler>org.primefaces.application.DialogNavigationHandler</navigation-handler>
<view-handler>org.primefaces.application.DialogViewHandler</view-handler>
org.primefaces.application.DialogActionListener
org.primefaces.application.DialogNavigationHandler
org.primefaces.application.DialogViewHandler
javascript两次执行的更大问题是RequestContext.getCurrentInstance().closeDialog(..)方法也会关闭两次,因为它调用本机PrimeFaces.closeDialog({pfdlgcid:'{param.pfdlgcid}}}})脚本,如果使用嵌套对话框,则会关闭父对话框窗口,而不仅仅是子对话框
Primefaces版本是6.1
服务器是Payara,浏览器是Chrome
你知道这里出了什么问题吗?提前谢谢 部署的WebApp中有两个PF版本只有一个primefaces*.jar文件在我的WebApplication1\build\web\web-INF\lib\文件夹中。或者在哪里可以找到双PF版本?
<h:body>
<h:form id="helloform">
<p:commandButton value="Hello" actionListener="#{hello.actionhello()}" />
</h:form>
</h:body>
@ManagedBean(name = "hello")
public class Hello {
public void actionhello() {
RequestContext.getCurrentInstance().execute("alert('Hello World!');");
}
}
<action-listener>org.primefaces.application.DialogActionListener</action-listener>
<navigation-handler>org.primefaces.application.DialogNavigationHandler</navigation-handler>
<view-handler>org.primefaces.application.DialogViewHandler</view-handler>