2012-04-18 44 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