JSF 2.0, Mojarra 2.0.1, PrimeFaces 3.4.1
There are similar questions but I need sth. else; javascript function has to wait for the backing bean method, whic
JSF/EL and HTML/JS doesn't run in sync. Instead, JSF/EL run in webserver and produces HTML/JS which in turn runs in webbrowser. Open page in browser, rightclick and View Source. You see, there's no single line of JSF/EL. It's one and all HTML/JS. In place of your JS function, you'll see:
function afterLoad() {
alert("0");
}
Exactly this JS function get invoked on complete of your command button action. So the result is fully expected.
Basically, you want to let JSF re-render that piece of JS.
function afterLoad() {
alert("#{statusBean.size}");
}
Depending on the concrete functional requirement, which you didn't tell anything about, there may be more elegant ways. For example, RequestContext#execute(), , etc.