2016-06-28 96 views
0

我的項目中存在一個問題。 我有一個JSP頁面和一個Java servlet。該servlet必須使用session.setAttribute()在會話中保存名稱列表。在JSP頁面上,必須使用session.getAttribute()從會話中讀取並使用for-loop打印列表中的所有名稱。所以目前的問題是我不知道如何將Obect/ArrayList轉換爲普通的String數組。 我知道有更好的方法來做到這一點,但我必須這樣做。將ArrayList轉換爲普通字符串數組

這裏是我的代碼

的Servlet:

private ArrayList<String> userlist = new ArrayList<String>(Arrays.asList("bla1","bla2","bla3","bla4")); // unsynchronisiert 

public void addName(String name){ 
    userlist.add(name); 
} 

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
    // TODO Auto-generated method stub 
    addName(request.getParameter("username")); 
    System.out.println(userlist); 
    HttpSession session = request.getSession(); 
    session.setAttribute("userlist", userlist); 
} 

JSP:

String[] names = (String[]) session.getAttribute("userlist"); 
System.out.println(names); 
+1

您不能將ArrayList 轉換爲String []。你爲什麼不把它投射到ArrayList?如果你需要一個String [],你可以通過list.toArray(new String [list.size()])解析它。 –

+0

好吧我可以解決這個問題,但它仍然告訴我「null」。我不明白爲什麼? – WeSt

回答

0

您是鑄造的ArrayList到Array.you着投的ArrayList到數組。

您需要替換:
String [] names =(String [])session.getAttribute(「userlist」);

ArrayList list =(ArrayList)session.getAttribute(「userlist」);

現在迭代列表並從中獲取數據。

+0

好的,我可以解決這個問題,但它仍然告訴我「null」。我不明白爲什麼? – WeSt

+0

請提供錯誤日誌文件。如果它返回null,則表示沒有爲該密鑰(userlist)存儲會話中的內容。或者您正在嘗試在存儲會話之前獲取數據。 –