1
当我使用JSF 2 Ajax时,如何控制响应是否可缓存。如果可能的话,我如何控制AJAX响应的expdate日期?谢谢! - CharlieJSF 2 AJAX响应缓存
当我使用JSF 2 Ajax时,如何控制响应是否可缓存。如果可能的话,我如何控制AJAX响应的expdate日期?谢谢! - CharlieJSF 2 AJAX响应缓存
正如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);
}
}
PSSH的'HttpFilter'不是一部分)在我们的项目中,它是一个自带的方便的HTTP层,通过简单的'javax.servlet.Filter' API。 – BalusC 2011-12-28 23:19:52
哈哈,我们选择的名字看起来太像官方名称。但对我感到羞耻,我会改变答案;) – 2011-12-29 00:26:08