• ベストアンサー

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> <% }%> という記述にしていますが、うまく動きません。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

><% 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タグを使って出力する方法もあります。 こちらの方法がお勧めですが。

noname#209802
質問者

お礼

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

noname#209802
質問者

補足

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

その他の回答 (2)

  • jicchi2
  • ベストアンサー率27% (5/18)
回答No.3

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

noname#209802
質問者

補足

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

  • momozange
  • ベストアンサー率67% (21/31)
回答No.1

うまくいかないのであれば、ひとつずつ解決していくとよいでしょう。 # そもそも「どううまくいかないか」が明記されていません。 (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)%> <% } %> 時間はかかりますが自分のスキルにあったプログラミング手順を確立しましょう。

noname#209802
質問者

お礼

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

noname#209802
質問者

補足

確認するということで <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に入るはずのデータが空白になっています。・。・。

関連するQ&A

専門家に質問してみよう