我们最近从 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。
不幸的是,我在使用 el-resolver 的 IBM 页面上找不到答案。
编辑:
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...