我们正在将 JSF 1.1 (MyFaces) 项目迁移到 JSF 2。这个想法是通过将 JSP 和 XHTML 保持一段时间来定期迁移。我们在 JSP 页面中使用了许多 ajax4jsf-1.1.1 标签。我们不使用 RichFaces。将系统配置为 JSF 2 后(Balusc 教程中提到的所有配置更改)当尝试使用类路径中的 ajax4jsf.jar 访问 JSP 页面时,我们得到一个异常:
Caused by: java.lang.IllegalStateException: setViewHandler may not be executed after a lifecycle request has been completed
at org.apache.myfaces.application.ApplicationImpl.setViewHandler(ApplicationImpl.java:853)
at org.ajax4jsf.framework.ajax.InitPhaseListener.beforePhase(InitPhaseListener.java:92)
at org.apache.myfaces.lifecycle.PhaseListenerManager.informPhaseListenersBefore(PhaseListenerManager.java:76)
at org.apache.myfaces.lifecycle.LifecycleImpl.executePhase(LifecycleImpl.java:131)
看起来 ajax4jsf.jar 与 JSF 2 不兼容。LifeCycle 配置看起来有些问题。
有什么方法可以让 a4j 与 JSF 2 JSP 一起工作?我知道当我们使用 XHTML 时,我们不需要所有这些。