类org.springframework.web.jsf.el.SpringBeanFacesELResolver必须扩展类型javax.el.E​​LResolver

时间:2009-07-29 15:16:16

标签: spring jsf el facelets

我正在尝试将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

有什么想法吗?

8 个答案:

答案 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 ELResolverabstract 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)

配置项目方面。用于与本地服务器一起运行

enter image description here

答案 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依赖