- PR -

struts を使わす、JSP上で ArrayList に格納した JavaBeans のループ展開方法

1
投稿者投稿内容
kejiuyudu
ベテラン
会議室デビュー日: 2004/08/11
投稿数: 82
投稿日時: 2004-09-13 03:47
こんばんは。struts の勉強もかなり進み、struts の良さが肌で感じるようになってきました。
そこで質問があるのですが、struts の<logic:iterate......>を使用せずに、以下のように、複数の JavaBeans を格納した ArrayList を JSP(strutsを使用せず) で展開し、ループで property="a"とproperty="b" を表示させようとしたのですが、つまづきました。

=====================================================================================
ArrayList array = new ArrayList();
.
.
.
省略
.
.

for(int i=0; ........){
TestBeans inst = new TestBeans();
inst.setA(aaa);
inst.setB(bbb);
.
.
.
array.add(inst);
}
.
.
.
request.setAttribute("okArray", array);
getServletContext().getRequestDispatcher("/jsp/disp.jsp");

=====================================================================================
<%@ page contentType="............................%>
<jsp:useBean id="okArray" class="beans.TestBeans" scope="request" />
.
for(int i=0; ? ? ? ? ? ?; i++){
.
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?(ArrayListの展開方法が?)
.
.
<jsp:getProperty name="okArray" property="a" />
<jsp:getProperty name="okArray" property="b" />
.
.
.
}


===================================================================================
上記のようなJSP(strutsを使用せず)上で複数のJavaBeansを展開する時、forループ内の??????と 展開したいArrayList の展開方法が分かりません。
御指導の程よろしくお願いします。

[ メッセージ編集済み 編集者: ryo 編集日時 2004-09-13 03:50 ]
未記入
大ベテラン
会議室デビュー日: 2003/06/28
投稿数: 219
投稿日時: 2004-09-13 08:44
おはようございます。
外していたら突っ込んでいただいてOKですが、 やりたい事は
1. TestBeans オブジェクトを生成して値を格納。
2. それぞれの TestBeans オブジェクトをArrayList の要素として格納。
3. そのArrayList を setAttribute する。

もし、そうであれば

1. ArrayList を getAttributeで取り出し。
2. ArrayList から それぞれの要素として格納されている TestBeans を取り出し。
3. TestBeans から値の取り出し。

このようなフローを構成すればよろしいかと思われますが、いかがでしょうか?
(株)ぽち
ぬし
会議室デビュー日: 2002/09/10
投稿数: 376
投稿日時: 2004-09-13 13:23
このケースだと

引用:

<jsp:getProperty name="okArray" property="a" />



は使用できないんじゃないでしょうか。

requestに直接TestBeanクラスが入っている状態じゃないと
上記コードは機能しないように思います。

ですので

コード:
ArrayList array = (ArrayList) request.getAttribute( "okArray" );
for( int i=0; i<array.size(); i++ ) {
  TestBean inst = (TestBean) array.get(i);
  aaa = inst.getA();
  bbb = inst.getB();
  ・・・・・・・・・
}



とかってするしかないかな?
kejiuyudu
ベテラン
会議室デビュー日: 2004/08/11
投稿数: 82
投稿日時: 2004-09-13 19:50
なるほど、request.getAttribute() を使えばいけるんだ。有難うございます。
常に念頭に<jsp:getProperty ........>しか考えていませんでした。反省

<jsp:getProperty ........>を使って、ArrayListである"okArray"から複数のJavaBeansを展開する方法はないのでしょうか?
御指導の程よろしくお願いします。
(株)ぽち
ぬし
会議室デビュー日: 2002/09/10
投稿数: 376
投稿日時: 2004-09-14 09:08
引用:

<jsp:getProperty ........>を使って、ArrayListである"okArray"から複数のJavaBeansを展開する方法はないのでしょうか?
御指導の程よろしくお願いします。


通常の方法ではないんではないんじゃないですかね。

Struts使うならiterateタグとかあるのかな。
Struts使ったことないんでなんともいえませんが。
kejiuyudu
ベテラン
会議室デビュー日: 2004/08/11
投稿数: 82
投稿日時: 2004-09-14 21:33
>Struts使うならiterateタグとかあるのかな。

そうなんです。今勉強中で iterate が便利だとは分かったのですが、逆に同じことを <jsp:useBean ...>でできないのかなあと思い、チャレンジをしたのですが挫折してしまいました。
方法をご存知でしたら御紹介願いますか。よろしくお願いします。
tu
会議室デビュー日: 2003/07/31
投稿数: 11
投稿日時: 2004-09-14 21:55
答えになっているか分かりませんが、JSTLとELを使えばStrutsは
使わないでも可能だと思いますよ。useBeanでは難しいと思います。

JSTLとELについては、次が参考になりました。
http://www.fk.urban.ne.jp/home/kishida/kouza/kishou/jspjstl.html
kejiuyudu
ベテラン
会議室デビュー日: 2004/08/11
投稿数: 82
投稿日時: 2004-09-14 22:30
>useBeanでは難しいと思います。

やはり難しいのですか。
何故なんでしょうか?理由が知りたいです。useBean が扱えるのは 1つのオブジェクトに対してだけなのでしょうか?
1

スキルアップ/キャリアアップ(JOB@IT)