如何:使用 javax.servlet.Filter 拦截 a4j 请求?

发布于 2024-09-16 03:18:57 字数 149 浏览 4 评论 0原文

有谁知道如何使用 javax.servlet.Filter 拦截 a4j 请求? 拦截必须在调用 FacesServlet 之前发生(这就是我计划使用 Filter 来执行此操作的原因)。

我想知道哪个方法将在我的 backbean 上执行,因为我需要首先进行动态控制。

Does anybody know how to intercept a a4j request using a javax.servlet.Filter?
The interception must occur before FacesServlet be called (it's why I'm planning to do it using Filter).

I'd like to know which method will be executed on my backbean, cause I need to do a dynamic control first.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

乜一 2024-09-23 03:18:57

您想要确定 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 上,因为它当前在 web.xml 中定义。 。

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

You'd like to determine the request headers for a marker of the a4j request. I don't do a4j, but if it is doing its work well, you should be able to determine it based on the X-Requested-With header.

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

Then just determine in an if block if the value is the expected one for a4j requests and handle accordingly. Don't forget to continue the filter chain at end whenever neccessary.

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

To get it to run, just map it on the <servlet-name> of the FacesServlet as it is currently definied in web.xml.

<filter-mapping>
    <filter-name>yourFilter</filter-name>
    <servlet-name>facesServlet</servlet-name>
</filter-mapping>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文