session - implementar - jsf ejemplo
Cómo utilizar las cookies en JSF (1)
Tengo un formulario JSF sobre un bean de alcance de sesión JSF 1.2. Tengo un botón "Restablecer" que invalida la sesión.
Intenté usar cookies para recordar un número de sesión (no la sesión JSF sino mi número de sesión privada) entre sesiones pero fallé. Mi pregunta: ¿Dónde está el lugar correcto (algunos oyentes? ¿Bean Constructor?) Para inicializar, recuperar y almacenar la cookie.
Buscando el mejor método para hacer esto.
¡Gracias!
Puede obtener todas las cookies por ExternalContext#getRequestCookieMap()
Map<String, Object> cookies = externalContext.getRequestCookieMap();
// ...
Cuando se ejecuta JSF sobre la API de Servlet (que es verdadera en el 99.9% de los casos;)), el valor del mapa se resuelve en javax.servlet.http.Cookie
.
Cookie cookie = (Cookie) cookies.get(name);
// ...
En JSF 1.2, que carece del método ExternalContext#addResponseCookie()
introducido por JSF 2.0, debe convertir ExternalContext#getResponse()
a HttpServletResponse
(solo cuando ejecute JSF sobre API de Servlet, por supuesto) y luego use el 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);
Puede hacer esto en cualquier lugar en el contexto JSF que desee, el lugar correcto depende del único requisito funcional. Solo debe asegurarse de no agregar la cookie cuando la respuesta ya haya sido confirmada; de lo contrario, se produciría una IllegalStateException
.