Как обычно для приложений JSF, заголовки кэширования устанавливаются через Filter
, который является частью уровня сервлета.Для этого уровня не существует автоматической разницы между обычным запросом и запросом AJAX.
Однако JSF помечает запросы как запросы AJAX с помощью параметра запроса javax.faces.partial.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);
}
}