有人知道如何使用 javax.servlet.Filter 拦截 a4j 请求吗? 拦截必须在调用 FacesServlet 之前发生(这就是我计划使用 Filter 来执行此操作的原因)。
我想知道哪个方法将在我的 backbean 上执行,因为我需要先进行动态控制。
最佳答案
您想要确定 a4j 请求标记的请求 header 。我不做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);
要让它运行,只需将其映射到 <servlet-name>
FacesServlet
的正如当前在 web.xml
中定义的那样.
<filter-mapping>
<filter-name>yourFilter</filter-name>
<servlet-name>facesServlet</servlet-name>
</filter-mapping>
关于java - 如何: Intercept a a4j request using a javax. servlet.Filter?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3567468/