我正在序列化会话中的所有数据,并使用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.
}
}