6

This is code:

 <p:ajax event="eventResized" process="@this calendar"  listener="#{bean.eventResized}" oncomplete="resizeComplete()"/>

eventReized invoked by EventResizeBehavior which extended from AjaxBehaviorEvent and it contains some property. Can I check inside <p:ajax....> call its value and pass result to oncomplete="resizeComplete(result)"

Something like that

<p:ajax event="eventResized" process="@this calendar"  listener="#{bean.eventResized}" oncomplete="resizeComplete(#{eventResized.id == 0})"/>
BalusC
  • 1,082,665
  • 372
  • 3,610
  • 3,555
Anatoly
  • 5,056
  • 9
  • 62
  • 136

1 Answers1

9

PrimeFaces doesn't support it. Any EL expressions in oncomplete attribute are immediately evaluated during render response of that HTML document, not during oncomplete of the associated ajax call. Basically, the JavaScript code generated by oncomplete attribute contains the old value as it was during the page load.

Your best bet is using RequestContext#addCallbackParam() to add a property to the PrimeFaces-specific args object which is available in oncomplete scope.

RequestContext.getCurrentInstance().addCallbackParam("result", eventResized.getId() == 0);
<p:ajax ... oncomplete="resizeComplete(args.result)" />

An alternative is to use RequestContext#execute() instead of oncomplete to programmatically instruct PrimeFaces to execute a piece of JavaScript on complete of the ajax request.

RequestContext.getCurrentInstance().execute("resizeComplete(" + (eventResized.getId() == 0) + ")");
BalusC
  • 1,082,665
  • 372
  • 3,610
  • 3,555
  • Thank you BalusC, I suspected that I will need to use mixed solution, but didn't know how to it such simple like your solution. – Anatoly May 12 '15 at 12:32
  • 2
    You're welcome. I'd like to note that RichFaces supports the construct as you'd intuitively expect, it would indeed have been nice if PrimeFaces did that too. – BalusC May 12 '15 at 12:33
  • If you are using Primefaces version 7+ you can use `PrimeFaces.current().executeScript("...")`, see this thread for more details https://stackoverflow.com/questions/55285566/primefaces-requestcontext-under-7-0 – TomasZ. Sep 28 '21 at 14:15