使用Ajax4jsf 1.x将JSF 1.1迁移到JSF 2
我们正在将JSF 1.1(MyFaces)项目迁移到JSF 2.我们的想法是通过将JSP和X
HTML保持在一起一段时间来定期迁移.我们在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时,我们不需要这一切.
完全摆脱Ajax4jsf 1.x.它确实与JSF2不兼容.相反,JSF2提供了一个新的主要ajax标签< f:ajax>它涵盖了Ajax4jsf 1.x之前提供的所有核心功能.
如果升级到RichFaces 4不是一个选项(因为,正如你自己所说,你没有在任何地方使用RichFaces组件),那么只需删除Ajax4jsf 1.x并替换所有< a4j:xxx>标签JSF2等价物. >< a4j:ajaxListener>:使用< f:ajax listener>. 您还需要将JSP文件重命名/重写为Facelets文件.在简单的情况下,这通常只是更改根声明和文件扩展名的问题. Facelets可以更轻松地通过单个模板替换所有重复的代码.以下答案适用: > Migrating from JSF 1.2 to JSF 2.0 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |