- PR -

リストボックスのキー値にオブジェクトを設定する方法

1
投稿者投稿内容
みつお
会議室デビュー日: 2004/12/09
投稿数: 17
投稿日時: 2005-02-10 10:49
リストボックスのキー値にオブジェクトを設定することが可能でしょうか?今、JAVAでStrutsベースのWebアプリケーションを開発しています。リストボックスからある項目を選択する際、キー値として文字列を得ることがありますが、その文字列をオブジェクトに換え、項目が選択された後、キー値のオブジェクトを取得し、そのオブジェクトの持つ値や文字列を取得するということを実装したいと思っています。
 キー値に数値を設定して、その数値の値によって取得先のクラスで分岐して処理をするということも考えたのですが、リストの項目は動的に生成されるために、分岐は対応することができません。なので分岐ではなく、直接選択された項目のキー値からオブジェクトを取得し、さらにそのオブジェクトが持つ値を取得したいと考えています。
ソースの一部を以下に記述しました。

まず、ArrayListに格納されたオブジェクトを抽出して、そのオブジェクトが持つ「番号」を取り出します。そして、それをリストボックスのvalueにセットしました。キー値にはArrayListから取り出したオブジェクトそのものをセットしています。

---------------------------------
List = new JOBForm();
for(i=0;i < List.toArray().length;i++)   配列数だけループ
{
Info = new JOBForm();             
Info = (JOBForm)List.get(i);    オブジェクトを取り出す     
List.setselectJOB_LIST(Info.getNum());  番号を抽出し、プロパティにセット
List.setMapData(Info,List.getselectJOB_LIST());  リストにセット
}
----------------------------------

リストに表示されたValueの値を選択すると以下のsetSelectJOBが呼ばれると思うのですが、デバッグをした結果、これが呼ばれていません。引数がJOBFormというオブジェクトの配列なのがいけないのでしょうか。これをStringに変え、リストボックスのキー値も文字列に変えた結果は上手くキー値を取得できます。

----------------------------------
public String[] getSelectJOB() {return SelectJOB;}


public void setSelectJOB( JOBForm[] o_SelectJOB ) {
this.SelectJOB[0] = (String)o_SelectJOB[0].getKnji();
}テストのため配列の0番目のみにセット。
----------------------------------


結果を表示するJSPから選択された項目のキー値を取得する部分のソースです。
----------------------------------
<BODY>
<title>KENMU</title>
<logic:iterate id = "JOB" name="JOBForm" property="selectJOB">
<bean:write name="JOB"/>
</logic:iterate>
</BODY>
----------------------------------

これらを実行すると、結果は「500 Internal Server Error、no collection found」と出てしまいます。どなた様か、原因や解決方法などをお気づきの方がいらっしゃいましたら、是非ご教授願います。よろしくお願いします。
1

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