Can I update a JSF component from a JSF backing bean method?

java, javabeans, jsf, jsf-2, primefaces

Solution

Using standard JSF API, add the client ID to `PartialViewContext#getRenderIds()`.

FacesContext.getCurrentInstance().getPartialViewContext().getRenderIds().add("foo:bar");

Using PrimeFaces specific API, use `PrimeFaces.Ajax#update()`.

PrimeFaces.current().ajax().update("foo:bar");

Or if you're not on PrimeFaces 6.2+ yet, use `RequestContext#update()`.

RequestContext.getCurrentInstance().update("foo:bar");

If you happen to use JSF utility library OmniFaces, use `Ajax#update()`.

Ajax.update("foo:bar");

Regardless of the way, note that those client IDs should represent absolute client IDs which are not prefixed with the `NamingContainer` separator character like as you would do from the view side on.

Problem

Is there a way to have a JSF Backing bean cause an update of a component on the page? I am not looking to use an ajax component with update attribute to update a component on the page. I need to trigger an update from within a JSF backing bean method. Note the update on the page can happen after this method completes or prior to its completion. I am using PrimeFaces, if there is a solution that can be had from using PrimeFaces.

Original source

Related problems