• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:JSPでbeanプロパティ(配列)をgetしたい)

JSPでbeanプロパティ(配列)をgetする方法

このQ&Aのポイント
  • JSPでbeanプロパティ(配列)をgetするための方法について教えてください。
  • 具体的には、下のコードの(1)の箇所の記述方法がわかりません。
  • getIntSuryo()メソッドの括弧内にindexを入れてみましたが、エラーとなりました。

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

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

とりあえず、 <td><jsp:getProperty name="E" property="intSuryo[i]" />個</td> は <td><%=E.getIntSuryo()[i]%>個</td> これでいいと思います。 property="intSuryo[i]" Engineクラスにはこのようなプロパティは存在しないのでエラーが出ると思いますよ。

kenton
質問者

お礼

akane_210さん、たびたびありがとうございます。 <td><%=E.getIntSuryo()[i]%>個</td> ふむふむ。こういう書き方をするのですね。 書き方もなかなかわからず困っていました。 試してみましたが、エラーには変化がありませんでした。 >property="intSuryo[i]" >Engineクラスにはこのようなプロパティは存在しないのでエラーが出ると思いますよ。 うーむ。この辺りもわかっていない(勘違い)のかもしれませんが、 public int[] getIntSuryo() { return intSuryo; } この一節で、それを定義しているものだと思っていました。 同じ書き方でint型のプロパティを、JSPでgetできたもので。 配列型のプロパティの宣言(?)というのは、 Engineクラスにどのように書けばよいのでしょうか?

kenton
質問者

補足

お礼に書いてしまったので、補足に書かせていただきます。 結論から書きますと、E.getIntSuryo()[i]という書き方のままで値を取得できるようになりました。 ただ、JavaBeansのgetプロパティのソース部分を、一度消しもう一度作った後に、動くようになりました。 それしか行っていないので、正直、原因はわかりませんでした。 ありがとうございました。

その他の回答 (1)

回答No.1

Engineクラスの表記のしかたがおかしい気がしますが。。 いまいち何がしたいのかわかりませんが、 どのようなエラー(結果)がでてるのかを示していただけると、他の方も回答がしやすいと思います。 とりあえず、Engineクラスにデフォルトコンストラクターが無いのは問題だとおもいますよ。 <jsp:useBean id="E" scope="page" class="myPack.Engine" /> でインスタンスが作成できませんので。。

kenton
質問者

お礼

akane_210さん、回答ありがとうございます。 JSPの練習の一環として、JavaBeansの配列変数に入っている計算結果をJSPから呼び出すということをしています。 それをテーブルタグ内に表示させてみようとなったわけです。 >Engineクラスにデフォルトコンストラクターが無いのは問題だとおもいますよ。 JavaBeansでは、引数の無いコンストラクタが必要であるということですよね? 私の誤解の可能性が高いですが、 コンストラクタをまったく定義しない場合、 自動的に引数の無いコンストラクタが作られているという認識を持っていたため、 コンストラクタらしきものは書いておりません。 というか引数の無いコンストラクタと言われても・・・(^^;)という感じでした。 その後、少し変更を加えました。 <%for (int i = 0; i < E.getIntSuryo().length; i++) {%> <tr> <td><jsp:getProperty name="E" property="intSuryo[i]" />個</td> </tr> <%} %> このようにループ処理に変えてみました。 現在は、次のエラーが出ています。 E' has no get method for 'intSuryo[i]' やはり、Engineクラスできちんとコンストラクタを作っていないからでしょうか? エラーを読む限りではメソッドが無いと言われていますが、 なんのメソッドが必要なのかわかりません。。。 もしお気づきの点がありましたら、再び教えていただければ幸いです。

関連するQ&A