- ベストアンサー
JSPでデータ一覧表示
JSP+Bean+Servletで作っています。 BeanでDB接続、データを取得して、 それをJSPで一覧表示として表示させたいのですが、 どのタグを使えばいいのでしょうか。 また、その場合、タグは、Servletとか Beanでかく必要がありますか。 たとえば、今、DBに30個データがある場合、 JSPでそれをTABLEタグを使って 一覧表示させますよね。 でもJSP側では、<TR><TD></TD></TR>の データをいくつセットできるか、っていう 数がきまってますよね。てことは、 ServletとかBeanでHTMLのタグをうって 表示させないといけないんですか??? やりたいことは、BeanとかServletで タグは書かずに、JSPでパラメータだけ 受け取って、その数だけデータを 表示させたいんです。 (JSPだけでタグをかいて、パラメータで わたってきたデータを表示させたい。) そういうことってできますか?? ・・・説明がうまく出来てないかとは思うのですが よろしくお願いします。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
どもども^^ 例えば、JSPが受け取ったデータ(Stringの配列やら、HashTableやら)を ループを使って表示させればいいのでは?? @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ <table> <% for(int i=0; i < 結果.length; i++){ %> <tr> <td><%= 結果[i] %></td> </tr> <% } %> </table> @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ こんな感じでHTMLのタグをJAVAのforループの中にほりこんで やれば、出来ると思うけど、だめ?? がんばってください。 わかりにくい説明だったら、ごめんね。
その他の回答 (4)
- mkim
- ベストアンサー率67% (25/37)
どもども^^ >もう一つ質問なんですが、このTABLEでの >一覧表示、ずらーーーーーと >でますよね。 >これを固定にする方法ってあります? >例えばスクロールバーがつくとか、 >あとは。。。。思い付きませんが。。。 テキストエリアのvalueに取得したデータを突っ込むと 一応、大きさ指定して横にスクロールバーを付ける事は、 できます。 しかし、それも、見た目はあまりかっこよくないかと。。。 どっちも、カッコよくないですね^^;; もう、それくらいしか思い浮かびません。 #私のJBuilderは、すぐにフリーズする。。。メモリ増設もしたのに。。(苦笑) #適当なエディタでごりごり書く方が、似合ってるのかな。。。
補足
アプレットで同じことをやったときは、 テキストエリアをEnabled==Falseにして 表示用にしてたんですが、 Enabled==Falseの概念ないですよね? サーブレット。。(あるのかな。) なので、<SELECT><OPTION>タグを 使おうかと思っています。 ここから、データを抽出できるとかに しようかと思います。 ありがとうございます。 JBuilder確かに重いです。 適当なエディタ。。。ちなみに mkimさんは何をお使いなんでしょうか。 Javaを書いている人が使ってるソフトで 最もポピュラーなのはなんなんでしょうかね。
- kuro_73
- ベストアンサー率28% (33/117)
今日はあまり時間がないので、少しだけ(笑) public String[] getList(int i) { return list[i]; } エラーおきるの当然です。 戻り値がString配列なのに、list[i]はStringです。 ただしくは public String getList(int i) { return list[i]; } です。 try{}catch{}で「i」が配列のサイズ以上だったら、ブランクを送るなり(不明)というStringを返すなりしたら、デバッグが少し楽になるかも。 で、余談ですが前の質問のお礼にかかれていたことについて。 私は仕事でServlet-JSP-Beanのコーディングをしています。 勉強というか、書いてるうちに身についたという感じです。 私ももっともっと精進しますので、お互いにがんばりましょう!
補足
ほんと、すみませーん。(>_<;) ここ、何日かご迷惑かけっぱなし、ですね。 感謝しております。。 >エラーおきるの当然です。 >戻り値がString配列なのに、list[i]はStringです。 ですねー。 String[]は配列で、 String[n]ていうのはStringですね。 初歩的なことでつまづいちゃって お恥ずかしいです。 >私は仕事でServlet-JSP-Beanのコーディングを >しています。 >勉強というか、書いてるうちに身についたという >感じです。 そうなのですか。 今までVBしか知らなくて、VBだと けっこうサンプルプログラムってありますが Java、、、特にServlet-JSP-Bean については、あまり出回ってないので 頭をかかえています。 MLとかで質問するとヒンシュクものの 質問に答えていただいて 本当にありがとうございました!!! 私もがんばります。
- mkim
- ベストアンサー率67% (25/37)
どもども^^ public String[] getList(int i) { return list[i]; } これは、無しでやってみますか! Stringの方のgetList()は、残しておいてね。 ちょっと原始的かもしれないので、自分で変更してくれてもOKです! @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ <% String[] aaa = wk.getList(); //Stringの配列をaaaにセット %> <table> <% for(int p=0; p < wk.getData_cnt(); p++){ %> <tr> <td><%= aaa[p] %>out.print("www");</td> </tr> <% } %> </table> @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ さっきの変なの(Ljava.lang.String;@6fb836out )が、 表示されてたのは、String型の配列を表示しようとして、 あんなものが表示されていたんですね! #これで、いけるかと。。。 だめだったら、また質問してください。
補足
多分、私がやってるwk.getList()[p]ていうのと 結果一緒ですよね? wk.getListでの戻り値が配列自体でしたね。 すみませんでした。 ありがとうございました!!!!! 大変感謝しております。
- mkim
- ベストアンサー率67% (25/37)
はい。2回目のどもどもです^^ >wk.getData_cnt()はちゃんと件数がとれてました。 おめでとうございます。件数がとれていれば、だいぶ成功に 近づいてきましたね。 >wk.getList()このなかのかっこにカウンタ変数 >とかいれるとエラーになっちゃうんですが、、、 getList()のメソッドは、元々getList(int i)と言う 使い方が、できるのでしょうか?? 最近、JAVAから離れ気味で、忘れてきた(笑) Ljava.lang.String;@6fb836out ←こう言う風になるのって 型がおかしいからやったっけな。。 もしそうなら、(String)などのようにキャストしてね。自信無し。 あと、out.print("www"); これの部分なんやけど、 そこは、HTML部分なので、wwwって普通に書くだけで OKかと。。。。 out.print("www")このように表示させたい場合は、そのままね! #力不足ですいません^^;;
お礼
何度もすみません。 できました。 BeanのSet&Getメソッドはそのままで JSPで wk.getList()[p]というふうに したらできました。 wk.getList()はただ単に配列自体を 渡してるのでJSPで要素をセットしないといけない んですよね。 すみません。 もう一つ質問なんですが、このTABLEでの 一覧表示、ずらーーーーーと でますよね。 これを固定にする方法ってあります? 例えばスクロールバーがつくとか、 あとは。。。。思い付きませんが。。。 なんかアイディア、ありましたら 教えていただきたいのですが。。 かなり長くて、かっこわるいんです。 一覧。。。
補足
回答ありがとうございます。 >getList()のメソッドは、元々getList(int i)と言う >使い方が、できるのでしょうか?? JBuilderで作っているんですが、 Beanでプロパティの追加の設定をすると、 勝手にデフォルトでSetとGetメソッドが 作られるんです。 今回はlist[]という配列をプロパティとして追加 したんですけど、そうすると、以下のような メソッドがデフォルトでできます。 public String[] getList() { return list; } public void setList(String[] list) { this.list = list; } このGetメソッドを使ってJSPはパラメータ (今回はlist[]という配列です。)を 取得したいのです。mkimさんが書かれたように public String[] getList(int i) { return list[i]; } というふうにおくと、コーディングのエラーが でてしまいます。 何か、外してますでしょうか???
お礼
すみません。。また質問です。 <table> <% for(int p=0; p < wk.getData_cnt(); p++){ %> <tr> <td><%= wk.getList() %>out.print("www");</td> </tr> <% } %> </table> こういう感じでJSPは書いてます。 wk.getData_cnt()はちゃんと件数がとれてました。 Beanで読んだデータをArg_Dataという配列に 入れてSetメソッドでセットしています。 そしてJSPでGetしようと思ったんですが、 [Ljava.lang.String;@6fb836out.print("www");[Ljava.lang.String;@6fb836out.print("www");[Ljava.lang.String;@6fb836out.print("www"); ・ ・ ・ こんな感じで表示されます。 配列の要素数をセットしていないので こうなるんだとおもうんですが、 Forでまわすところ、配列の要素数 はどうやってセットしたらいいんでしょうか? wk.getList()このなかのかっこにカウンタ変数 とかいれるとエラーになっちゃうんですが、、、 基本的なことを聞いてすみません。
補足
mkimさん、早い回答ありがとうございます。 日々、分からないことだらけで追われております。。 そうですよねー。なんか勘違いしてたのかも。 JSPの中でまわしたらいいですよね。 ちょっとやってみます。 また質問するかもしれませんがよろしくお願いします。