2012-04-18 53 views
2

我想知道如果你可以在ajax声明里面调用javascript,我试图让下面的代码工作。Primefaces Ajax调用Javascript

 <p:commandLink id="saveButton" value="Save" > 
      <p:ajax event="click" actionListener="#{bean.saveButtonPressed()}" /> 
      <p:ajax event="click" actionListener="if(#{cbean.showSaveOverlay}){saveOverlay.show();}" /> 
     </p:commandLink> 

而showSaveOverly在saveButtonPressed内部设置。

任何想法我会怎么做?

回答

11

使用PrimeFaces提供的RequestContext API。

首先正常化你的Ajax听众:

<p:ajax event="click" listener="#{cbean.showSaveOverlay}" /> 

在相应的动作监听器方法最后调用RequestContext#execute()

public void showSaveOverlay() { 
    if (...) { 
     RequestContext.getCurrentInstance().execute("saveOverlay.show()"); 
    } 
} 
+0

有P中没有的ActionListener:阿贾克斯。我有PrimeFaces 6.3 – Mazy 2017-11-15 11:52:19

+0

的最后一个版本,它可能是一个好主意并且很有帮助,可以说明如何以及在何处将saveOverlay定义为一个javaScript代码。 – Mazy 2017-11-15 11:55:04

+0

@Mazy JavaScript代码通常在JavaScript文件中定义。 – BalusC 2017-11-15 12:10:24