Вы можете получить все файлы cookie с помощью ExternalContext#getRequestCookieMap()
Map<String, Object> cookies = externalContext.getRequestCookieMap();
// ...
При запуске JSF поверх Servlet API (что верно в 99,9% случаев;)),значение карты преобразуется в javax.servlet.http.Cookie
.
Cookie cookie = (Cookie) cookies.get(name);
// ...
В JSF 1.2, в которой отсутствует введенный в JSF 2.0 метод ExternalContext#addResponseCookie()
, необходимо привестиExternalContext#getResponse()
до HttpServletResponse
(конечно, только при запуске JSF поверх Servlet API), а затем используйте HttpServletResponse#addCookie()
.
HttpServletResponse response = (HttpServletResponse) externalContext.getResponse();
Cookie cookie = new Cookie(name, value);
cookie.setMaxAge(maxAge); // Expire time. -1 = by end of current session, 0 = immediately expire it, otherwise just the lifetime in seconds.
response.addCookie(cookie);
Вы можете сделать это где угодно в нужном JSF-контексте, правильное место зависит от единственного функционального требования.Вам нужно только убедиться, что вы не добавляете куки-файл, когда ответ уже принят, в противном случае это приведет к IllegalStateException
.