2010-08-25 107 views
1

有人知道如何使用javax.servlet.Filter攔截a4j請求嗎? 攔截必須發生在FacesServlet被調用之前(這就是爲什麼我打算使用Filter來做到這一點)。 我想知道什麼方法將在我的豆子上執行,因爲我需要先做一個動態控制。Howto:使用javax.servlet.Filter攔截a4j請求?

Tks!

回答

0

您想要確定a4j請求標記的請求標頭。我不做a4j,但如果它的工作做得很好,你應該可以根據X-Requested-With標題確定它。

String requestedWith = request.getHeader("X-Requested-With"); 

然後,只需在if塊確定該值是預期的一個用於A4J請求並且相應地處理。不要忘記在需要的時候結束過濾器鏈。

if (requestedWith.equals(someAjax4jsfSpecificValue)) { 
    // Do your job. 
} 
chain.doFilter(request, response); 

爲了得到它的運行,只是它映射的FacesServlet<servlet-name>,因爲它是在web.xml目前definied。

<filter-mapping> 
    <filter-name>yourFilter</filter-name> 
    <servlet-name>facesServlet</servlet-name> 
</filter-mapping>