【发布时间】:2011-10-27 19:44:20
【问题描述】:
我们最近从 WebSphere Portal v6.1 升级到 v7.0,在此过程中,我们现在可以使用 JSF 1.2。在 Rad 8 中创建一个新的 Portlet 项目会创建一个 faces-config.xml,其中包含以下条目
<application>
<state-manager>com.ibm.faces.application.DevelopmentStateManager</state-manager>
<variable-resolver>com.ibm.faces.portlet.PortletVariableResolver</variable-resolver>
</application>
然后抱怨:类型 API 变量解析器在 JSF 1.1 之后被弃用。请改用 el-resolver。
很遗憾,我在 IBM 页面上找不到要使用的 el-resolver 的答案。
编辑:
System.out.println("Resolver: " + PortalUtil.getFacesContext().getApplication().getELResolver());
=> 解析器:com.sun.faces.el.FacesCompositeELResolver@696e696e
在 faces-config 中添加一个条目
<el-resolver>com.sun.faces.el.FacesCompositeELResolver</el-resolver>
删除或不删除变量解析器会导致:
java.lang.IllegalStateException: Application was not properly initialized at startup, could not find Factory: javax.faces.context.FacesContextFactory
at javax.faces.FactoryFinder.getFactory(FactoryFinder.java:270)
at javax.faces.webapp.FacesServlet.init(FacesServlet.java:164)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.init(ServletWrapper.java:358)
... 89 more
与 IBM 合作的 PMR 已打开 ...
【问题讨论】:
-
来自 RAD 的警告消息:类 javax.el.ELResolver 必须是具体的(不是抽象的)。
-
我们使用Spring,有org.springframework.web.jsf.DelegatingVariableResolver。它工作正常。也许尝试为此解析器添加依赖项?把它像
org.springframework.web.jsf.DelegatingVariableResolver
标签: java jsf websphere-portal ibm-rad ibm-jsf