我有两个不同的 JSF2 页面和一个共享的支持 bean。如何将参数从页面传递到支持 bean(在页面加载时 - 使用 @PostConstruct 的方法),以便它知道当前正在使用哪个页面。
我知道可以使用<f:event>
like preRenderView
(like this),但它需要一个方法以及支持 bean 中的一个字段。这是否可以使用 f:attribute 或 f:param 之类的东西,而后备 bean 中没有任何额外的方法?
我有两个不同的 JSF2 页面和一个共享的支持 bean。如何将参数从页面传递到支持 bean(在页面加载时 - 使用 @PostConstruct 的方法),以便它知道当前正在使用哪个页面。
我知道可以使用<f:event>
like preRenderView
(like this),但它需要一个方法以及支持 bean 中的一个字段。这是否可以使用 f:attribute 或 f:param 之类的东西,而后备 bean 中没有任何额外的方法?
如果 bean 是请求范围的,只需将视图 ID 作为托管属性获取#{view.viewId}
。
@ManagedProperty("#{view.viewId}")
private String viewId; // +setter
如果 bean 是视图范围的,只需通过 . 直接获取视图 ID UIViewRoot#viewId()
。
private String viewId;
@PostConstruct
public void init() {
viewId = FacesContext.getCurrentInstance().getViewRoot().getViewId();
// ...
}