ajax - 如何忽略回发调用的过滤器

标签 ajax jsf postback servlet-filters

我有一个需要 id 参数 (GET) 的过滤器。当我在导航链接中添加参数时,这很好用。但是当我停留在同一个站点时(例如 ajax 调用),过滤器会大喊大叫,因为 id 参数丢失了。

如果请求来自 ajax,是否有机会忽略过滤器?
就像是

public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
    if (FacesContext.getCurrentInstance().isPostback()) {...}
    ...
}

?

最佳答案

我找到了一个工作正常的解决方案

private boolean isAJAXRequest(HttpServletRequest request) {
    boolean check = false;
    String facesRequest = request.getHeader("Faces-Request");
    if (facesRequest != null && facesRequest.equals("partial/ajax")) {
        check = true;
    }
    return check; 
}

在过滤器的开头,只需添加如下:
@Override 
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
    HttpServletRequest req = (HttpServletRequest) request;

    if(isAJAXRequest(req)){
        System.out.println("IGNORE THIS FILTER, AJAX");
        chain.doFilter(request, response);
        return;
    }
    ...
}

关于ajax - 如何忽略回发调用的过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18560435/

相关文章:

java - 如何在 Java Server Faces 2 中维护对象列表

jsf - 如何创建 h :selectOneRadio options with textarea, 文本框和文件上传字段?

c# - GridView.DataSource 在 PostBack 期间为 null

asp.net - Telerik RadWindow Javascript 将值返回到 ASP.NET

php - 将 $_session ['username' ] 保存在 ajax 函数中

c# - Asp.net 从 Ajax 调用 C# 方法

jquery - 如何在select 2 jquery中显示列表数据并查找数据

jsf - JSF 是否有多列数据表?

java - 添加/删除项目时的 Richfaces pickList ajax 事件

css - 页面回传上的 DotNetNuke CSS 问题?