[ACCEPTED]-Class org.springframework.web.jsf.el.SpringBeanFacesELResolver must extend the type javax.el.ELResolver-facelets

Accepted answer
Score: 12

From the spring documentation, you will see that for org.springframework.web.jsf.el.SpringBeanFacesELResolver:

delegates 13 to the Spring's 'business context' WebApplicationContext first, then 12 to the default resolver of the underlying 11 JSF implementation

and for org.springframework.web.jsf.DelegatingVariableResolver:

will 10 first delegate value lookups to the default 9 resolver of the underlying JSF implementation 8 and then to Spring's 'business context' WebApplicationContext

As 7 you can see, the behavior is very different. If 6 you don't care about order, you are fine, but 5 if you actually did intend to use org.springframework.web.jsf.el.SpringBeanFacesELResolver 4 then all you have to do is ensure the version 3 of el-api.jar in your dependencies is compatible 2 with your version of spring. For me, I 1 have this (in my 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>
Score: 2

This is possibly a ClassLoader configuration 13 issue. If the SpringBeanFacesELResolver's 12 parent class is from a different ClassLoader 11 to the one used by the JSF classes doing 10 the bootstrapping, the check to see if it 9 is an instance of ELResolver will fail.

Problems 8 like this can happen if you have a META-INF/faces-config.xml 7 in the global classpath, but I suppose there 6 could be other causes.

It would help if you 5 posted information on what container you 4 are using, the classloader policy for your 3 application and where you've placed any 2 third party libraries (such as the Facelets 1 and Spring libs).

Score: 2

To solve this type of problem you should 3 extend project with javax prefix because Class ELResolver is an abstract class under 2 javax.el package.

Here is code:

    <application>
      <javax.el-resolver>
        org.springframework.web.jsf.el.SpringBeanFacesELResolver
      </javax.el-resolver>      
    </application>

More information about ELResolver 1 class you can get by link.

Score: 1

Configure your Project facets. For run with 1 your local server

enter image description here

Score: 0

Please check the JAR files you are using 4 in application. Again the class paths set 3 in application. I think it is because of 2 the class conflicts in application class 1 paths.

Score: 0

Well my problem disappeared substituting 1 these lines by:

<!-- variable/property resolver registration -->
    <application>
        <view-handler>com.sun.facelets.FaceletViewHandler</view-handler>
        <variable-resolver>org.springframework.web.jsf.DelegatingVariableResolver</variable-resolver>
    </application>

hope it helps!

Score: 0

Thanks #saadi90, from mvnrepository.com I found this and 1 it solved the problem:

<dependency>
   <groupId>org.glassfish.web</groupId>
   <artifactId>el-impl</artifactId>
   <version>2.2</version>
</dependency>

More Related questions