当我使用JSF 2 Ajax时,如何控制响应是否可缓存。如果可能,我如何控制AJAX响应的expry日期?谢谢! - 查理
答案 0 :(得分:0)
与JSF应用程序一样,缓存标头是通过Filter
设置的,javax.faces.partial.ajax
是Servlet层的一部分。对于此层,正常请求和AJAX请求之间没有自动差异。
然而,JSF通过@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);
}
}
请求参数将请求标记为AJAX请求。 (参见JSF规范第14.2.4节)
如果你想特别控制所有JSF AJAX请求的响应头,你可以这样做:
{{1}}