在阶段执行期间引发的异常:javax.faces.event.PhaseEvent [source=com.sun.faces.lifecycle.LifecycleImpl@7c8ce10f]

时间:2019-06-13 11:48:32

标签: jsf viewexpiredexception

我正在序列化会话中的所有数据,并使用tomcat持久性管理器在DB表中将会话数据存储在JVM之外。没有持久性管理器,一切都会正常运行。但是使用perisitence Manager进行此会话存储。单击Web应用程序中的任何链接时,出现以下错误。

Exception thrown during phase execution: javax.faces.event.PhaseEvent[source=com.sun.faces.lifecycle.LifecycleImpl@719abade]
viewId:/pages/foo.jsf - View /pages/foo.jsf could not be restored.

我已将以下内容添加到我的web.xml

<context-param>  
    <param-name>com.sun.faces.enableRestoreView11Compatibility</param-name> <param-value>true</param-value>  
</context-param> 

添加上述配置将解决该异常,但是问题是单击任何链接无效,或者直到我刷新页面后它才响应。似乎存在一些JSF生命周期问题。我正在为名为PhaseListener的类实现JSFPhaseListener并在faces-config.xml中进行配置,因此我认为可以通过在JSFPhaseListener类中执行某些操作来解决此生命周期问题。有人请帮我解决这个问题。我的JSFPhaseListener类如下。

public class JSFPhaseListener implements PhaseListener {

    @Override
    public PhaseId getPhaseId() {
        return PhaseId.RENDER_RESPONSE;
    }

    @Override
    public void beforePhase(PhaseEvent event) {
        // Do your job here which should run right before the RENDER_RESPONSE.
    }

    @Override
    public void afterPhase(PhaseEvent event) {
        // Do your job here which should run right after the RENDER_RESPONSE.
    }

}

0 个答案:

没有答案
相关问题