2009-07-29 89 views
9

我試圖將Spring集成到JSF應用程序中。Class org.springframework.web.jsf.el.SpringBeanFacesELResolver必須擴展javax.el.E​​LResolver類型

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

那麼我的問題消失了代這些行:

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

希望它能幫助!

+9

變量解析器在JSF 1.1之後被棄用 – Cracker 2011-05-04 20:41:20

1

這可能是一個ClassLoader配置問題。如果SpringBeanFacesELResolver的父類是從不同的類加載器到執行引導的JSF類所使用的,那麼檢查它是否是ELResolver實例將會失敗。

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

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

0

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

11

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> 
0

謝謝#saadi90,從mvnrepository.com我發現這一點,它解決了這個問題:

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

配置您的項目構面。對於本地服務器上運行

enter image description here

1

爲了解決這類問題,你應該與javax prefix擴建項目,因爲Class ELResolverjavax.el package下一個abstract class

這裏是代碼:關於ELResolver類

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

更多信息,您可以通過link得到。