2011-06-28 96 views
2

我有一個規則,它工作得很好:UrlRewriteFilter是否匹配多個規則?

<rule> 
    <from>^/(about|account|admin|cpanel)(\?.*)?$</from> 
    <to last="true">/faces/pages/$1/$1.xhtml$2</to> 
</rule> 

當我添加以下上述規則後,我加載一個匹配的規則頁面時得到一個javax.servlet.ServletException: PWC1232: Exceeded maximum depth for nested request dispatches: 20例外。

<rule> 
    <from>^/([^\?]+?)/([^\?]+?)(\?.*)?$</from> 
    <to last="true">/faces/pages/$1/$2.xhtml$3</to> 
</rule> 

按照documentation,一旦第一條規則匹配,沒有更多的規則,應該是因爲我指定last="true"處理。任何想法,我可能會在這裏失蹤?

+0

該死的你stackoverflow和你的任意規則。我無法將上述內容作爲答案發布,至少不會再過幾個小時,因爲我不夠精幹。 –

+0

不錯的作品史蒂夫泰勒。你能否自己發佈問題的答案,然後接受答案,以便我們能夠解決這個問題?另外,如果他們解決了您的問題,則需要接受以前問題的答案。 – Zecas

+0

謝謝你提醒我這件事。我通常保持最新狀態。是的,我確實接受回答令人滿意的問題。 –

回答

4

在web.xml,我改變這個(這是UrlRewriteFilter文檔中示出)

<filter-mapping> 
    <filter-name>UrlRewriteFilter</filter-name> 
    <url-pattern>/*</url-pattern> 
    <dispatcher>REQUEST</dispatcher> 
    <dispatcher>FORWARD</dispatcher> 
</filter-mapping> 

<filter-mapping> 
    <filter-name>UrlRewriteFilter</filter-name> 
    <url-pattern>/*</url-pattern> 
</filter-mapping> 

,它開始表現正常。這很奇怪,但它有效。

似乎沒有重新發明輪子的價格花費了95%的開發時間處理第三個pary bug。 (GlassFish是主要的罪犯。)