2016-03-21 62 views
1

我正在嘗試編寫自定義表達式語言(EL)解析器。此解析器的目的是攔截對某個Bean的方法調用以添加第二個參數。我寫了一個自定義的EL解析器,覆蓋了invoke-方法來做我想做的事情。我也根據需要將解析器放入faces-config.xml重新排序自定義統一表達式語言解析器

不幸的是,我在我的項目中有一個依賴項,它也聲明瞭自定義EL Resolvers,並且它們放置在解析器鏈中的EL解析器之前。由於其他解析器之一已經處理了方法invoke-方法,我的定製invoke-方法永遠不會被調用。

是否有任何方法重新排序解析器,以便我的解析器首先被調用?我知道Apache MyFaces提供了一個訂購解析器的機制,但不幸的是我無法讓MyFaces在我的項目中工作。

回答

1

將EL解析器放在單獨的web fragment project中,最終以Web應用程序的/WEB-INF/lib中的JAR結尾。在網站片段項目faces-config.xml中,聲明排序爲「在其他人之前」,如下所示。

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

,或者如果「其他的依賴」也有一個faces-config.xml文件,宣佈<name>,則顯式聲明的順序該名稱。如果「其他依賴關係」恰好也具有上述排序集合,這將是唯一的方法。

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

注意到這應該會影響整個faces-config.xml

+0

謝謝。我希望有另一種方式,但我會嘗試這一點,並將其標記爲一切正常時的接受答案。 – jessepeng