【问题标题】:In JSF HttpServletRequest object getAttribute() returning Null在 JSF HttpServletRequest 对象中 getAttribute() 返回 Null
【发布时间】:2014-05-29 10:17:17
【问题描述】:

我有两个不同的 JSF 页面让我们假设 A.jsfB.jsf 但两者都调用相同的托管 bean 不同的方法 ManagedBean.java

A.jsf 正在调用 SessionScoped 托管 bean 方法,我在请求类对象中设置了一些属性

HttpServletRequest request = (HttpServletRequest) FacesContext
                .getCurrentInstance().getExternalContext().getRequest();
request.setAttribute("token", requestToken.getToken()); 
        request.setAttribute("tokenSecret", requestToken.getTokenSecret());

然后像这样重定向另一边

response.sendRedirect(requestToken.getAuthorizationURL());

现在成功登录后,我正在打开我网站的另一个 JSF 页面假设 b.jsf 并且从这个页面我正在调用这样的方法

<f:event listener="#{ManagedBean.redirectLogin2}" type="preRenderView" />

并调用相同的 Managedbean 但另一种方法

public String redirectLogin2() throws TwitterException {

        HttpServletRequest request = (HttpServletRequest) FacesContext
                .getCurrentInstance().getExternalContext().getRequest();
}

但是当我在上面的方法中做redirectLogin2()

request.getAttribute("token")
request.getAttribute("tokenSecret")

两者都给 Null。什么出租车是这里的问题?

【问题讨论】:

    标签: java jsf jsf-2


    【解决方案1】:

    sendRedirect 上的请求范围属性生命周期将丢失。您应该设置会话范围的值。

     HttpSession session=request.getSession();
     session.setAttribute("token", requestToken.getToken()); 
     session.setAttribute("tokenSecret", requestToken.getTokenSecret());
    

    将值设置为会话后。您可以从请求中访问它,例如

     HttpServletRequest request = (HttpServletRequest) FacesContext
                .getCurrentInstance().getExternalContext().getRequest();
    
    request.getSession().getAttribute("token");
    request.getSession().getAttribute("tokenSecret");
    

    虽然,上面的代码可以工作,但这不是一个好习惯。 JSF 有 @SessionScoped 注释,这将使您可以通过登录会话访问变量。

    【讨论】:

    • 同样的问题,上面的代码也没有任何成功,即使我试过'ExternalContext externalContext = FacesContext.getCurrentInstance().getExternalContext(); Map sessionMap = externalContext.getSessionMap(); String yourVariable = (String) sessionMap.get("token");'
    • 我还是没有得到任何帮助
    猜你喜欢
    • 2010-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-14
    • 2012-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多