2012-04-18 10 views
2

JavaScriptをAjaxの中で呼び出すことができるかどうかは私には分かります。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()を呼び出す:AJAX:Pには、そのActionListenerはありません

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

。私はPrimeFaces 6.3の最新バージョンを持っています。 – Mazy

+0

saveOverlayをjavaScriptコードとしてどのように定義するのかということは良いアイデアとなるでしょう。 – Mazy

+0

@Mazy JavaScriptコードは通常、JavaScriptファイルで定義されています。 – BalusC