2016-09-29 33 views
0

我正在尝试访问用于登录到另一个类中的SQL查询的接口的ID。如何从Java中的另一个类调用会话映射数据

我目前正在使用:

public void login (String UName) 
{ 
try 
    //sql stuff 

      FacesContext context = FacesContext.getCurrentInstance(); 
    Map<String, Object> userdata = context.getExternalContext().getSessionMap(); 

     UserBean userBean = new UserBean(); 
     userBean.setUserID(rs.getString(1).toString()); 
     userBean.setMajor(rs.getString(5).toString()); 
     userdata.put("userBean", userBean); 
    } 

,让我得到了用户ID,我可以显示JSF网页的数据。

但是,我想在另一个java类中获得该ID,即viewregistereduserID.java。因此,例如,我想要将用于登录的UserID作为可用于其他方法的字符串。我试过使用UserBean userBean =(UserBean)userdata.get(“userBean”);和@ManagedProperty(value =“#{userBean}”),但是当我尝试userBean.getUserID时,结果都是null。

在这个例子中,我使用了@SessionScoped这两个java类。

有谁知道我可以如何访问字符串中的数据?

回答

0

通知:我现在如果有什么误会我的英语学习者,请让我知道

什么,我想你做的只是创建一个其他类的价值回归。 您可以创建一个一流的呼叫在这种情况下viewregistereduserID

public class viewregistereduserID{ 
//fields 
public String userID; 
//constructor 
viewregistereduserID(String userID){ 
    this.userID=userID; 
} 
//method 
public String getUserID(){ 
    return this.userID; 
} 

}

,你可以调用这个类为静态或任何其他类中创建一个对象。

调用它的其他类: 你可以创建一个对象:

public class login(String name){ 
    public static void main(String[] args){ 
      viewregistereduserID VID=new viewregistereduserID(); 
      System.out.print(VID.getUserID()); 
} 

}

+0

嘿感谢快速回复。不幸的是,你的回应并不适合我,但你的英语看起来不错。 :) – jni4

0

我通过想出解决我自己的问题:

private UserBean userInfo; 

    FacesContext context = FacesContext.getCurrentInstance(); 
    Map<String, Object> m = context.getExternalContext().getSessionMap(); 
    userInfo = (UserBean) m.get("userBean"); 
    System.out.println(userInfo.getUserID());