I have two different JSF2 pages with a shared backing bean. How can I pass a parameter from page to the backing bean (on page load - method with @PostConstruct) so that it knows which page is currently being used.
I know it's possible to use an <f:event>
like preRenderView
(like this), but it then requires a method as well as a field in the backing bean. Is this possible with something like f:attribute or f:param, without any extra method in the backing bean?
If the bean is request scoped, just get the view ID as managed property by #{view.viewId}
.
@ManagedProperty("#{view.viewId}")
private String viewId; // +setter
If the bean is view scoped, just get the view ID directly by UIViewRoot#viewId()
.
private String viewId;
@PostConstruct
public void init() {
viewId = FacesContext.getCurrentInstance().getViewRoot().getViewId();
// ...
}