2013-11-04 24 views
7

Servlet'ten JSP'ye nesne içeren ArrayList'i iletmeye çalışıyorum. AmaSunucudan JSP'ye geçiş ArrayList

Servlet dosyası:

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

JSP dosyası:

//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

neyin exeption? –

+1

Neden nesnelerle ilgilenmek için JSP-EL + JSTL kullanmıyorsunuz? İkincisi, Servlet'ten JSP'ye nasıl geçiyorsunuz? Yönlendirme veya ileri kullanma? –

+0

@DebojitSaikia sonucu hiçbir şey göstermiyor – Pravin

cevap

13

, talimat request.setAttribute("servletName", categoryList) ile, istek nesnesi listenizi kaydetmek ve bunu da gelip adı "servletName" kullanın.
Bu arada, bir liste için "servletName" adını kullanmak oldukça kafa karıştırıcı olabilir, belki de buna "liste" veya benzer bir şey diyebilirsiniz: request.setAttribute("list", categoryList)
Neyse, serlvet kodunuzu değiştirmediğinizi ve listeyi sakladığınızı varsayalım "servletName" adını kullanarak. JSP'nize geldiğinizde, listeyi istekten almak gerekir ve bunun için sadece request.getAttribute(...) yöntemine ihtiyacınız vardır.

burada
<% 
// 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") yöntemi mümkün hataları olacaktır ArrayList

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

kurucusundan 'new' unuttuysanız, yeni ArrayList () ':) –

+0

@ user2511414 evet teşekkürler .... güncellendi. – Prabhakaran

+0

Teşekkürler .. ama yine de hiçbir şey görüntülenmiyor – Pravin

0

yayın yapmak için gereken Object dönecektir. ..
1.Sistem listesini, istekte değil, oturumdaki servelt'ten ayarlayabilirsiniz.
2. Ayarladığınız dizi boş.
3. Sayfayı yönlendirmek yerine yönlendirirsiniz. Ayrıca, list ve category'u jsp'de başlatmamanız gerekir.


. bunu dene. servlet kodunda

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

out.println(cx.getId()); 

out.println(cx.getName()); 

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

liste özellik adı istekte set request.setAttribute("List",list); ve 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)); 

} 


%>