gpt4 book ai didi

jsf - 通过预创建 FacesContext 在 Filter 中访问请求属性(在重定向之前在托管 bean 中设置)

转载 作者:行者123 更新时间:2023-12-04 15:46:23 25 4
gpt4 key购买 nike

在通过 faces-config 重定向请求之前,我在托管 bean 中设置请求属性,如下所示:

FacesContext.getCurrentInstance().getExternalContext().getRequestMap().put("foo","bar");

return "redirect_success";

在此之后,我尝试通过预创建 FacesContext 在我的过滤器中访问此请求属性

FacesContext.getCurrentInstance().getExternalContext().getRequestMap().get("foo");

最终无法在过滤器本身中获取此属性,但我能够非常轻松地在第二个托管 bean 中再次获取相同的属性。有什么方法可以在过滤器本身中获取它吗?

最佳答案

两种方式:

  1. 存储在 session 中,并在必要时让过滤器将其从 session 中删除。

    externalContext.getSessionMap().put("foo", "bar");

    顺便说一句,无需在 Filter 中自己创建 FacesContext。只需将 ServletRequest 转换为 HttpServletRequest

    HttpSession session = ((HttpServletRequest) request).getSession();
    String foo = (String) session.getAttribute("foo");
    session.removeAttribute("foo");
  2. 使用 ExternalContext#redirect() 将其添加为请求参数。

    externalContext.redirect("other.jsf?foo=bar");

    然后在Filter中:

    String foo = ((HttpServletRequest) request).getParameter("foo");

关于jsf - 通过预创建 FacesContext 在 Filter 中访问请求属性(在重定向之前在托管 bean 中设置),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4895391/

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