簡體   English   中英

類org.springframework.web.jsf.el.SpringBeanFacesELResolver必須擴展類型javax.el.E​​LResolver

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

我試圖將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

有任何想法嗎?

spring文檔中 ,您將看到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>

要解決此類問題,您應該使用javax prefix擴展項目,因為Class ELResolverjavax.el package下的abstract class

這是代碼:

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

有關ELResolver類的更多信息,您可以通過鏈接獲得。

這可能是ClassLoader配置問題。 如果SpringBeanFacesELResolver的父類來自不同的ClassLoader,而不是JSF類用於引導的類,則檢查它是否是ELResolver的實例將失敗。

如果在全局類路徑中有META-INF / faces-config.xml,可能會發生這樣的問題,但我想可能還有其他原因。

如果您發布了有關您正在使用的容器,應用程序的類加載器策略以及您放置任何第三方庫(例如Facelets和Spring庫)的信息,這將有所幫助。

配置項目方面。 用於與本地服務器一起運行

在此輸入圖像描述

請檢查您在應用程序中使用的JAR文件。 應用程序中設置的類路徑。 我認為這是因為應用程序類路徑中的類沖突。

好吧,我的問題消失了,取而代之的是:

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

希望能幫助到你!

謝謝#saadi90,來自mvnrepository.com我找到了這個,它解決了這個問題:

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

你需要el-impl依賴

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM