2013-11-04 69 views
7

サーブレットのオブジェクトを含むArrayListをJSPに渡そうとしています。しかしサーブレットからJSPにArrayListを渡す

サーブレットファイル:

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を使用しないのですか?第二に、サーブレットからJSPにどうやって行きますか?リダイレクトまたはフォワードを使用していますか? –

+0

@DebojitSaikia結果は何も表示されない – Pravin

答えて

13

、命令request.setAttribute("servletName", categoryList)で、あなたがリクエストオブジェクトにリストを保存し、それを参照のうえ名「servletName」を使用。
ところで、リストに「servletName」という名前を使用すると、「list」などと呼ばれる方が紛らわしいかもしれません。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")方法は、あなたが可能性のあるエラーは次のようになりArrayList

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

コンストラクタの前に 'new'を忘れてしまった' new ArrayList () ':) –

+0

@ user2511414ええ、ありがとう....更新しました。 – Prabhakaran

+0

ありがとうございます..まだ何も表示されていません – Pravin

0

にキャストする必要がObjectを返します。 ..
1.リクエスト内ではなく、セッション内のserveltから配列リストを設定します。
2.設定した配列はnullです。
3.転送する代わりにページをリダイレクトします。

また、listcategoryをjspで初期化しないでください。これを試して。サーブレットコードで

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)); 

} 


%> 
関連する問題