2011-12-27 142 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