Класс org.springframework.web.jsf.el.SpringBeanFacesELResolver должен расширять тип javax.el.ELResolver - PullRequest
10 голосов
/ 29 июля 2009

Я пытаюсь интегрировать 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 ]

12 голосов
/ 29 июля 2011

Из весенней документации вы увидите, что для 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. зависимости совместимы с вашей версией весны. Для меня у меня есть это (в моем 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>
2 голосов
/ 13 ноября 2017

Чтобы решить проблему такого типа, вы должны расширить проект на javax prefix, потому что Class ELResolver - это abstract class в javax.el package.

Вот код:

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

Более подробную информацию о классе ELResolver вы можете получить по ссылке .

1 голос
/ 10 октября 2016

Настройте ваши аспекты проекта. Для запуска с локальным сервером

enter image description here

1 голос
/ 29 июля 2009

Возможно, это проблема конфигурации ClassLoader. Если родительский класс SpringBeanFacesELResolver отличается от ClassLoader, отличного от того, который используется классами JSF, выполняющими загрузку, проверка на наличие экземпляра ELResolver завершится неудачно.

Подобные проблемы могут возникать, если у вас есть META-INF / Face-config.xml в глобальном пути к классам, но я предполагаю, что могут быть и другие причины.

Было бы полезно, если бы вы опубликовали информацию о том, какой контейнер вы используете, о политике загрузчика классов для своего приложения и о том, где вы разместили какие-либо сторонние библиотеки (такие как библиотеки Facelets и Spring).

0 голосов
/ 29 декабря 2015

Спасибо # saadi90, из mvnrepository.com Я нашел это и это решило проблему:

<dependency>
   <groupId>org.glassfish.web</groupId>
   <artifactId>el-impl</artifactId>
   <version>2.2</version>
</dependency>
0 голосов
/ 21 апреля 2015

Вам нужна зависимость el-impl

0 голосов
/ 18 августа 2009

Ну, моя проблема исчезла, заменив эти строки на:

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

надеюсь, это поможет!

0 голосов
/ 06 августа 2009

Пожалуйста, проверьте файлы JAR, которые вы используете в приложении. Снова пути классов, установленные в приложении. Я думаю, что это из-за конфликтов классов в путях классов приложений.

...