我有一个需要 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/