2013-11-04 273 views
7

我試圖將包含servlet對象的ArrayList傳遞給JSP。但將ArrayList從servlet傳遞給JSP

Servlet的文件:

request.setAttribute("servletName", categoryList); //categorylist is an arraylist  contains object of class category 
getServletConfig().getServletContext().getRequestDispatcher("/GetCategory.jsp").forward(request,response); 

JSP文件:

//category class  
<% Category category = new Category(); 
//creating arraylist object of type category class 
ArrayList<Category> list = ArrayList<Category>(); 
//storing passed value from jsp 
list = request.getAttribute("servletName"); 

for(int i = 0; i < list.size(); i++) { 

category = list.get(i); 

out.println(category.getId()); 

out.println(category.getName()); 

out.println(category.getMainCategoryId()); 
} 
%> 
+1

什麼的exeption? –

+1

爲什麼不使用JSP-EL + JSTL來處理對象?其次,你如何從Servlet到JSP?使用重定向還是前進? –

+0

@DebojitSaikia結果什麼也沒有顯示 – Pravin

回答

13

在servlet代碼,與指令request.setAttribute("servletName", categoryList),保存您的列表中請求對象,並使用名爲「servletName」爲闖民宅它。
順便說一句,使用名稱「servletName」作爲一個列表是相當混亂,也許最好稱之爲「列表」或類似的東西:request.setAttribute("list", categoryList)
無論如何,假設你不改變你的serlvet代碼,並存儲列表使用名稱「servletName」。當您到達JSP時,需要從請求中檢索列表,爲此您只需要使用request.getAttribute(...)方法。

<% 
// retrieve your list from the request, with casting 
ArrayList<Category> list = (ArrayList<Category>) request.getAttribute("servletName"); 

// print the information about every category of the list 
for(Category category : list) { 
    out.println(category.getId()); 
    out.println(category.getName()); 
    out.println(category.getMainCategoryId()); 
} 
%> 
4

request.getAttribute("servletName")方法將返回Object,你需要轉換爲ArrayList

ArrayList<Category> list =new ArrayList<Category>(); 
//storing passed value from jsp 
list = (ArrayList<Category>)request.getAttribute("servletName"); 
+1

你已經忘記了構造函數new ArrayList ()':) – 2013-11-04 11:52:15

+0

@ user2511414 yeah thanks .... updated。 – Prabhakaran

+0

謝謝..但仍然沒有顯示 – Pravin

0

可能出現的錯誤會。 ..
1.您在會話中設置servelt的數組列表,而不是在請求中。
2.您設置的數組爲空。
3.你重定向頁面而不是轉發它。

你也不應該在jsp中初始化listcategory。嘗試這個。

for(Category cx: ((ArrayList<Category>)request.getAttribute("servletName"))) { 

out.println(cx.getId()); 

out.println(cx.getName()); 

out.println(cx.getMainCategoryId()); 
} 
-2

在此列出屬性名稱,請求設置request.setAttribute("List",list);ArrayList list=new ArrayList();

<% 

ArrayList<Category> a=(ArrayList<Category>)request.getAttribute("List"); 

out.print(a); 

for(int i=0;i<a.size();i++) 

{ 
    out.println(a.get(i)); 

} 


%>