Ответ 1
Вы можете получить все файлы cookie ExternalContext#getRequestCookieMap()
Map<String, Object> cookies = externalContext.getRequestCookieMap();
// ...
При запуске JSF поверх 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 поверх API Servlet, конечно), а затем используйте 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, нужное место зависит от единственного функционального требования. Вам нужно только убедиться, что вы не добавите файл cookie, когда ответ уже был зафиксирован, иначе это приведет к IllegalStateException
.