2016-09-29 32 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());