Primefaces Ajax calling Javascript
ajax, jsf, primefaces
Solution
Use the PrimeFaces-provided `RequestContext` API.
First normalize your ajax listener:
<p:ajax event="click" listener="#{cbean.showSaveOverlay}" />
Then add the script to `RequestContext#getScriptsToExecute()` in the action listener method accordingly:
public void showSaveOverlay() {
if (...) {
RequestContext.getCurrentInstance().getScriptsToExecute().add("saveOverlay.show()");
}
}
If you're not on PrimeFaces 7.0 yet, then use `RequestContext#execute()` instead:
public void showSaveOverlay() {
if (...) {
RequestContext.getCurrentInstance().execute("saveOverlay.show()");
}
}
Problem
I was wondering if you could call javascript inside of an ajax statment specificlly I am trying to get the following to work. ``` <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> ``` And showSaveOverly gets set inside saveButtonPressed. Any idea how I would do this?