【发布时间】:2011-04-03 19:21:35
【问题描述】:
有人知道如何使用 javax.servlet.Filter 拦截 a4j 请求吗? 拦截必须在调用 FacesServlet 之前发生(这就是我打算使用 Filter 进行拦截的原因)。
我想知道将在我的 backbean 上执行哪个方法,因为我需要先进行动态控制。
【问题讨论】:
标签: java jsf richfaces servlet-filters ajax4jsf
有人知道如何使用 javax.servlet.Filter 拦截 a4j 请求吗? 拦截必须在调用 FacesServlet 之前发生(这就是我打算使用 Filter 进行拦截的原因)。
我想知道将在我的 backbean 上执行哪个方法,因为我需要先进行动态控制。
【问题讨论】:
标签: java jsf richfaces servlet-filters ajax4jsf
您想为 a4j 请求的标记确定请求标头。我不做a4j,但是如果它做的很好,你应该可以根据X-Requested-With这个header来判断。
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 中定义。
<filter-mapping>
<filter-name>yourFilter</filter-name>
<servlet-name>facesServlet</servlet-name>
</filter-mapping>
【讨论】: