Primefaces对话框架:RequestContext.execute - Javascript调用两次

时间:2017-07-07 10:41:33

标签: javascript primefaces dialog requestcontext

我想从对话框窗口的bean中调用javascript,但它会被执行两次!

我使用RequestContext.getCurrentInstance()。execute()方法。如果页面不是“对话框架”,则此方法可以正常工作,但在外部页面对话框窗口中,javascript执行两次。

父页面:

<h:form id="welcomeform">
  <p:commandButton  value="Welcome" actionListener="#{welcome.openhello()}" />
</h:form>

父bean:

@ManagedBean
public class Welcome {
    public void openhello() {
        Map<String,Object> options = new HashMap<String, Object>();
        options.put("modal", true);
        options.put("width", 300);
        options.put("height", 100);
        options.put("resizable", false);
        options.put("closable", true);
        RequestContext context = RequestContext.getCurrentInstance();
        context.openDialog("hello", options, null);
    }
}

对话框页面:

<h:body>        
    <h:form id="helloform">
        <p:commandButton    value="Hello" actionListener="#{hello.actionhello()}" />
    </h:form>
</h:body>

对话框bean:

@ManagedBean(name = "hello")
public class Hello {
    public void actionhello() {
        RequestContext.getCurrentInstance().execute("alert('Hello World!');");
    }
}

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>

这次两次执行javascript的问题越大,RequestContext.getCurrentInstance()。closeDialog(..)方法也会关闭两次,因为它调用本机PrimeFaces.closeDialog({pfdlgcid:'#{param.pfdlgcid}' })脚本,如果使用嵌套对话框,它也将关闭父对话窗口,而不仅仅是子对话框。

Primefaces版本是6.1 服务器是Payara,浏览器是Chrome。

任何想法在这里出了什么问题?提前谢谢!

0 个答案:

没有答案