JSF:如何检查我是否处于"恢复视图"阶段?

Bes*_*ces 5 jsf java-ee

当我的托管bean中的特定方法被调用时,我想知道我是否处于JSF生命周期的恢复视图阶段.我怎样才能做到这一点?

Bal*_*usC 14

如果您已经使用JSF 2.0,那么您可以使用FacesContext#getCurrentPhaseId()以下方法进行检查:

if (FacesContext.getCurrentInstance().getCurrentPhaseId() == PhaseId.RESTORE_VIEW) {
    // Restore view called.
}
Run Code Online (Sandbox Code Playgroud)

但是如果你还在JSF 1.x上,那么你最好的选择是使用一个PhaseListener监听PhaseId.RESTORE_VIEW,在请求范围内设置一个标志/切换/标记并在其中beforePhase()删除它afterPhase().让bean的getter方法检查它在请求范围中的存在.

那就是说,你到底需要什么呢?我从来没有需要这样的功能要求.是不是bean的构造函数或带@PostConstruct注释的方法可能是更好的地方做这样的初始化的东西?