2011-12-27 81 views
1

当我使用JSF 2 Ajax时,如何控制响应是否可缓存。如果可能的话,我如何控制AJAX响应的expdate日期?谢谢! - CharlieJSF 2 AJAX响应缓存

回答

0

正如JSF应用程序的典型代码,缓存头文件是通过Filter设置的,该文件是Servlet层的一部分。对于这个层,在普通请求和AJAX请求之间没有自动区别。

但JSF通过javax.faces.partial.ajax请求参数将请求标记为AJAX请求。 (见JSF规范第14.2.4)

如果你这样想专门控制响应头为所有JSF AJAX请求,你会做这样的事情:

@WebFilter(filterName="httpHeaders", urlPatterns="/*") 
public class HTTPHeaders extends Filter { 

    @Override 
    public void doFilter(HttpServletRequest request, HttpServletResponse response, FilterChain chain) throws IOException, ServletException { 

     if (request.getParameter("javax.faces.partial.ajax") != null) { 
      response.setHeader("Cache-Control", "..."); 
      response.setDateHeader ("Expires", "..."); 
      response.setHeader("Pragma", "..."); 
     } 

     chain.doFilter(request, response); 
    } 
} 
+0

PSSH的'HttpFilter'不是一部分)在我们的项目中,它是一个自带的方便的HTTP层,通过简单的'javax.servlet.Filter' API。 – BalusC 2011-12-28 23:19:52

+0

哈哈,我们选择的名字看起来太像官方名称。但对我感到羞耻,我会改变答案;) – 2011-12-29 00:26:08