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

时间:2010-03-30 16:57:45

标签: jsf java-ee

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

1 个答案:

答案 0 :(得分:13)

如果您已使用JSF 2.0,则可以使用FacesContext#getCurrentPhaseId()进行检查:

if (FacesContext.getCurrentInstance().getCurrentPhaseId() == PhaseId.RESTORE_VIEW) {
    // Restore view called.
}

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

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