1

我有两个不同的 JSF2 页面和一个共享的支持 bean。如何将参数从页面传递到支持 bean(在页面加载时 - 使用 @PostConstruct 的方法),以便它知道当前正在使用哪个页面。

我知道可以使用<f:event>like preRenderView(like this),但它需要一个方法以及支持 bean 中的一个字段。这是否可以使用 f:attribute 或 f:param 之类的东西,而后备 bean 中没有任何额外的方法?

4

1 回答 1

1

如果 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();
    // ...
}
于 2012-10-30T23:19:57.780 回答