Session 如何在JSF中使用cookie

Session 如何在JSF中使用cookie,session,jsf,cookies,Session,Jsf,Cookies,我在JSF1.2会话范围Bean上有一个JSF表单。 我有一个“重置”按钮,它使会话无效 我尝试在会话之间使用cookies来记住会话号(不是JSF会话,而是我的私有会话号),但失败了。 我的问题-初始化、检索和存储cookie的正确位置(某个侦听器?Bean构造函数?)在哪里 寻找最好的方法来做到这一点 谢谢 您可以通过 在缺少JSF2.0引入的方法的JSF1.2中,您需要强制转换到(当然只有在ServletAPI之上运行JSF时),然后使用 您可以在JSF上下文中的任意位置执行此操作,正确的

我在JSF1.2会话范围Bean上有一个JSF表单。 我有一个“重置”按钮,它使会话无效

我尝试在会话之间使用cookies来记住会话号(不是JSF会话,而是我的私有会话号),但失败了。 我的问题-初始化、检索和存储cookie的正确位置(某个侦听器?Bean构造函数?)在哪里

寻找最好的方法来做到这一点


谢谢

您可以通过

在缺少JSF2.0引入的方法的JSF1.2中,您需要强制转换到(当然只有在ServletAPI之上运行JSF时),然后使用


您可以在JSF上下文中的任意位置执行此操作,正确的位置取决于唯一的功能需求。您只需确保在响应已提交时不添加cookie,否则会导致错误。

方法
addResponseCookie()
接受参数
字符串名称、字符串值、映射属性。我假设
javax.servlet.http.Cookie
的maxAge等都是在属性中编码的。有没有办法直接使用
Cookie
?单击我答案中的
addResponseCookie()
链接。它指向javadoc。@BalusC,我必须得到所有的cookie才能得到一个特定的cookie,难道我不能直接得到一个特定的cookie吗?@Mahmoud:你说的是
getRequestCookieMap()
?我不确定这到底是怎么形成问题的。Cookie已经在地图中进行了分析和收集。这种情况并非每次都发生。如果您想要更方便的方法,您可以查看
Faces#getRequestCookie()
methodof。
Map<String, Object> cookies = externalContext.getRequestCookieMap();
// ...
Cookie cookie = (Cookie) cookies.get(name);
// ...
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);