12

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

何か案は?

4

8 に答える 8

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>
于 2011-07-29T15:11:46.007 に答える
2

これは、ClassLoader の構成の問題である可能性があります。SpringBeanFacesELResolver の親クラスが、ブートストラップを実行する JSF クラスによって使用されるものとは異なる ClassLoader からのものである場合、それが ELResolver のインスタンスであるかどうかを確認するチェックは失敗します。

このような問題は、グローバル クラスパスに META-INF/faces-config.xml がある場合に発生する可能性がありますが、他の原因がある可能性があると思います。

使用しているコンテナー、アプリケーションのクラスローダー ポリシー、およびサード パーティ ライブラリ (Facelets や Spring ライブラリなど) を配置した場所に関する情報を投稿すると役立ちます。

于 2009-07-29T15:52:34.643 に答える
0

さて、これらの行を次のように置き換えると、私の問題はなくなりました。

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

それが役に立てば幸い!

于 2009-08-18T08:08:52.410 に答える
0

アプリケーションで使用している JAR ファイルを確認してください。再びアプリケーションで設定されたクラスパス。アプリケーションのクラスパスでのクラスの競合が原因だと思います。

于 2009-08-06T07:45:25.993 に答える
0

mvnrepository.com の #saadi90 に感謝します。これを見つけて、問題を解決しました。

<dependency>
   <groupId>org.glassfish.web</groupId>
   <artifactId>el-impl</artifactId>
   <version>2.2</version>
</dependency>
于 2015-12-29T15:25:00.870 に答える
-1

el-impl依存関係が必要です

于 2015-04-21T12:59:46.533 に答える