我正在尝试将Spring集成到JSF应用程序中。
在faces-config.xml
中,我已将此包含在内:
<application>
<el-resolver>org.springframework.web.jsf.el.SpringBeanFacesELResolver</el-resolver>
<view-handler>com.sun.facelets.FaceletViewHandler</view-handler>
</application>
但它显示了一个我无法摆脱的奇怪警告:
Class org.springframework.web.jsf.el.SpringBeanFacesELResolver must extend the type javax.el.ELResolver
有什么想法吗?
答案 0 :(得分:12)
从spring documentation开始,您会看到org.springframework.web.jsf.el.SpringBeanFacesELResolver:
委托Spring的'业务上下文'WebApplicationContext 首先,然后到底层JSF的默认解析器 实施
和org.springframework.web.jsf.DelegatingVariableResolver:
首先将值查找委托给默认的解析器 底层的JSF实现,然后是Spring的“业务环境” WebApplicationContext的
如您所见,行为非常不同。如果你不关心订单,你很好,但如果你确实打算使用org.springframework.web.jsf.el.SpringBeanFacesELResolver,那么你所要做的就是确保你的el-api.jar版本依赖项与您的spring版本兼容。对我来说,我有这个(在我的maven pom中):
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>3.0.5.RELEASE</version>
<type>jar</type>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>el-api</artifactId>
<version>6.0.32</version>
<type>jar</type>
<scope>provided</scope>
</dependency>
答案 1 :(得分:2)
要解决此类问题,您应该使用javax prefix
扩展项目,因为Class ELResolver
在abstract class
下是javax.el package
。
这是代码:
<application>
<javax.el-resolver>
org.springframework.web.jsf.el.SpringBeanFacesELResolver
</javax.el-resolver>
</application>
您可以通过link获取有关ELResolver课程的更多信息。
答案 2 :(得分:1)
这可能是ClassLoader配置问题。如果SpringBeanFacesELResolver的父类来自不同的ClassLoader,而不是JSF类使用引导的类,那么检查它是否是ELResolver的实例将会失败。
如果在全局类路径中有META-INF / faces-config.xml,可能会发生这样的问题,但我想可能还有其他原因。
如果您发布了有关您正在使用的容器,应用程序的类加载器策略以及您放置任何第三方库(例如Facelets和Spring库)的信息,那将会有所帮助。
答案 3 :(得分:1)
配置项目方面。用于与本地服务器一起运行
答案 4 :(得分:0)
请检查您在应用程序中使用的JAR文件。应用程序中设置的类路径。我认为这是因为应用程序类路径中的类冲突。
答案 5 :(得分:0)
我的问题消失了,取代这些行:
<!-- variable/property resolver registration -->
<application>
<view-handler>com.sun.facelets.FaceletViewHandler</view-handler>
<variable-resolver>org.springframework.web.jsf.DelegatingVariableResolver</variable-resolver>
</application>
希望它有所帮助!
答案 6 :(得分:0)
谢谢#saadi90,来自mvnrepository.com我找到了这个并解决了问题:
<dependency>
<groupId>org.glassfish.web</groupId>
<artifactId>el-impl</artifactId>
<version>2.2</version>
</dependency>
答案 7 :(得分:-1)
您需要el-impl依赖