2010-08-25 109 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>