gpt4 book ai didi

session - 如何在 JSF 中使用 cookie

转载 作者:行者123 更新时间:2023-12-02 06:48:49 24 4
gpt4 key购买 nike

我有一个基于 JSF 1.2 session 范围 Bean 的 JSF 表单。我有一个“重置”按钮,它会使 session 无效。

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

寻找最佳方法来做到这一点。

谢谢!

最佳答案

您可以通过ExternalContext#getRequestCookieMap()获取所有cookie

Map<String, Object> cookies = externalContext.getRequestCookieMap();
// ...

当在 Servlet API 之上运行 JSF 时(99.9% 的情况都是如此;)),映射值解析为 javax.servlet.http.Cookie .

Cookie cookie = (Cookie) cookies.get(name);
// ...

在 JSF 1.2 中,缺少 JSF 2.0 引入的 ExternalContext#addResponseCookie()方法,您需要强制转换 ExternalContext#getResponse()HttpServletResponse (当然,仅当在 Servlet API 之上运行 JSF 时)然后使用 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 .

关于session - 如何在 JSF 中使用 cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5557710/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com