プロが教えるわが家の防犯対策術!

JAVAでDBから取得し
ArrayList shikakuCdList = shikakuCd_Data();
request.setAttribute("shikakuCdList", shikakuCdList);

JSPでコンボボックスに表示しようと思います
<% ArrayList bumonlist = (ArrayList)request.getAttribute("bumonCdList");%>


<% for ( int i = 0; i < bumonlist.size(); i++ ){%>
<option value=" (1)ここの記述方法も  "></option>
<% }%>

という記述にしていますが、うまく動きません。
よろしくお願いします。

A 回答 (3件)

><% for ( int i = 0; i < bumonlist.size(); i++ ){%>


><option value=" (1)ここの記述方法も  "></option>
><% }%>
この部分ですが、

もし、shikakuCd_Data()の返すArrayListの中身が
JavaBean(下記はTestBean)であれば、

<% for ( int i = 0; i < bumonlist.size(); i++ ){%>
<% TestBean test = (TestBean)bumonlist.get(i); %>
<option value="<%= test.ゲッター %>"></option>
<% }%>

もしくは、useBeanアクションをつかい、
coreライブラリのforEachタグを使って出力する方法もあります。
こちらの方法がお勧めですが。

この回答への補足

まだ実装には至っていないのですが、
JSP内部でのインポートなどは必要ですよね?

補足日時:2007/09/07 12:00
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
質問ですが、shikakuCdList.get(i) だとelementDataの1個したの階層が取得されますが、さらにもう1個したの階層を取得する場合は、どうすればいいのでしょうか?

お礼日時:2007/09/07 14:17

setAttribute と getAttribute とで引数の名称が違っていますよ。

この回答への補足

それはただの間違いです・・。
実際はどちらもShikakuで取得&セットです。

補足日時:2007/09/07 12:49
    • good
    • 0

うまくいかないのであれば、ひとつずつ解決していくとよいでしょう。


# そもそも「どううまくいかないか」が明記されていません。

(1)Servletで設定した値はJSPで取得できているか
(2)JSP内のfor文の記述は間違っていないか
(3)HTMLのoptionタグは間違っていないか

すべて「ひとつずつ」確認するのです。

(1)はrequest#getAttributeした内容をnullかどうか判定してみる。
nullでなければ要素数を出力してみる。

(2)はとりあえずoptionタグを記述せずに意図した回数分だけ
ループ処理が行われているか確かめてみる。
<%
for (int i = 0; i < 10; i++) {
%>
要素<%=i%>
<%
}
%>

(3)は自分でHTML記述をしてみて本当にコンボボックスが表示されるか
確かめてみる。
<select name="hoge">
<option value="foo">foo</option>
<option value="bar">bar</option>
</select>
# 要は最終形はこうならないといけない

そこではじめて組み合わせていくといいでしょう。
Servletの値を使わずに、とりあえずJSP内でArrayListを作成してみてもいいでしょ
う。
<%
List dummyList = new ArrayList();
dummyList.add("foo");
dummyList.add("bar");
%>
<%
for (int i = 0; i < dummyList.size(); i++) {
%>
要素<%=dummyList.get(i)%>
<%
}
%>

時間はかかりますが自分のスキルにあったプログラミング手順を確立しましょう。

この回答への補足

確認するということで
<td><%List dummyList = new ArrayList();%>
<% dummyList.add("001"); %>
<% dummyList.add("002"); %>

<% if(request.getAttribute("mode")=="insert" ){%>

<select name="bumonCd">
<%for (int i = 0; i < dummyList.size(); i++) {%>
<option value="<%=dummyList.get(i)%>">
<%}%>
</select>

という記述+importをしたのですが、エラーは消えて表示はできましたが、valueに入るはずのデータが空白になっています。・。・。

補足日時:2007/09/07 13:42
    • good
    • 0
この回答へのお礼

あ、<option value="<%=dummyList.get(i)%>"> ココの記述がないだけでした・・。

お礼日時:2007/09/07 13:48

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A