2016-03-21 9 views
1

カスタム式言語(EL)リゾルバを作成しようとしています。このリゾルバの目的は、特定のBeanへのメソッド呼び出しをインターセプトして、2番目のパラメータを追加することです。私はinvokeメソッドを上書きするカスタムELリゾルバを書いています。必要に応じて、リゾルバをfaces-config.xmlに入れます。カスタムユニファイドエクスプレッション言語リゾルバの並べ替え

残念ながら、自分のプロジェクトに依存しているのは、カスタムELリゾルバも宣言しており、リゾルバチェーンのELリゾルバの前に配置されています。他のリゾルバの1つが既にinvokeメソッドを処理しているので、私のカスタムinvokeメソッドが呼び出されることはありません。

リゾルバを最初に呼び出すようにリゾルバを並べ替える方法はありますか?私はApache MyFacesがリゾルバを注文する仕組みを提供していることを知っていますが、残念ながら私のプロジェクトでMyFacesを動作させることはできません。

答えて

1

は、最終的にはWebアプリケーションの/WEB-INF/libでJARとして終わる別々のweb fragment projectでのELリゾルバを置きます。 Webフラグメントプロジェクトのfaces-config.xmlでは、以下のように、「他のものよりも前に」と宣言します。

<ordering> 
    <before> 
     <others /> 
    </before> 
</ordering> 

または「他の依存関係」も宣言<name>faces-config.xmlファイルがある場合、明示的順序でその名前を宣言します。これは、「他の依存関係」もまさに上記の順序付けセットを持っていれば、唯一の方法になります。

<ordering> 
    <before> 
     <name>nameOfThatOtherDependency</name> 
    </before> 
</ordering> 

これはfaces-config.xml全体に影響することに注意してください。

+0

ありがとうございます。私は別の方法があった望んだが、私はこれを試してみると、すべての作品とき受け入れ答えとしてこれをマークします。 – jessepeng