【发布时间】:2013-07-07 08:14:36
【问题描述】:
我们正在将 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 时,我们不需要所有这些。
【问题讨论】:
-
你试过用 RichFaces 4 代替 ajax4jsf 吗?
-
是的,很快就试过了。但是面临着使用 JSP 进行导航和操作处理的问题。没有深入研究它,因为我们计划将来使用 primefaces 并且目前不想冒险进入 Richfaces。
-
只是为了让你知道,RichFaces 吸收了 ajax4jsf 项目。我不明白为什么不冒险进入 RichFaces。
-
担心我们最终可能会同时拥有 RF 和 PF。知道 RichFaces 4 a4j 标签是否适用于 JSP?
-
RF 和 PF 都没有问题。我建议您首先尝试并让它发挥作用来解决您当前的问题,然后开始关注新的迁移问题(这不会很难如果那让你担心的话),而不是一直问,什么也不做。
标签: jsf jsf-2 richfaces myfaces ajax4jsf