0

我有一个看起来像这样的 bean 类

@ManagedBean(name = "usingBean")
@SessionScoped
public class UserInfo implements Serializable {

    private static final long serialVersionUID = 2668727340500045081L;

    String loginId;

}

我在过滤器类中设置了这个 bean 属性。

我正在尝试在另一个 bean 类中获取此属性

@ManagedProperty(value = "#{usingBean}")
private UserInfo user;

public UserInfo getUser() {
    return user;
}

public void setUser(UserInfo user) {
    this.user = user;
}
UserInfo neededBean = (UserInfo) context.getApplication()
                .createValueBinding("#{usingBean}").getValue(context);
                return neededBean.getLoginId();

当我尝试打印它时它说空,但它确实被插入到数据库中。当不同的用户登录时,它不会改变。

4

1 回答 1

0

尝试使用简单的方法,在您的过滤器类中将您的属性设置为会话

       FacesContext context = FacesContext.getCurrentInstance();
        HttpServletRequest request = (HttpServletRequest) context
                .getExternalContext().getRequest();
        HttpSession httpSession = request.getSession(false);
        httpSession.setAttribute("loginId", loginId);

在另一个类中,您可以从会话中获取“loginId”...

        FacesContext context = FacesContext.getCurrentInstance();
        HttpServletRequest request = (HttpServletRequest) context
                .getExternalContext().getRequest();
        HttpSession httpSession = request.getSession(false);
        String loginId= (String) httpSession.getAttribute("loginId");
于 2016-07-01T06:24:31.073 回答