- ベストアンサー
javaでDBから取得したデータのJSP表示
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> <% }%> という記述にしていますが、うまく動きません。 よろしくお願いします。
- みんなの回答 (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タグを使って出力する方法もあります。 こちらの方法がお勧めですが。
その他の回答 (2)
- jicchi2
- ベストアンサー率27% (5/18)
setAttribute と getAttribute とで引数の名称が違っていますよ。
補足
それはただの間違いです・・。 実際はどちらもShikakuで取得&セットです。
- momozange
- ベストアンサー率67% (21/31)
うまくいかないのであれば、ひとつずつ解決していくとよいでしょう。 # そもそも「どううまくいかないか」が明記されていません。 (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)%> <% } %> 時間はかかりますが自分のスキルにあったプログラミング手順を確立しましょう。
お礼
あ、<option value="<%=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に入るはずのデータが空白になっています。・。・。
お礼
回答ありがとうございます。 質問ですが、shikakuCdList.get(i) だとelementDataの1個したの階層が取得されますが、さらにもう1個したの階層を取得する場合は、どうすればいいのでしょうか?
補足
まだ実装には至っていないのですが、 JSP内部でのインポートなどは必要ですよね?