アプリ版:「スタンプのみでお礼する」機能のリリースについて

こんにちわ。

表題の件ですが、下のようなbeanファイルとjspファイルの構成です。
--AAA.JSP--
<jsp:useBean id="E" scope="page" class="myPack.Engine" />
・・・・途中をかなり略・・・・
<td><%= E.getIntSuryo() %></td> <========(1)

Engineクラス(bean側)
package myPack;

public class Engine {
int intSuryo[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
}

public int[] getIntSuryo() {
return intSuryo;
}
--------------ここまで-------------

ここで、(1)の箇所の記述の仕方がわかりません。
インデックスを指定して、1~10までを表にしようと思っています。
getIntSuryo()の括弧内にindexを入れてみましたが、
エラーとなり怒られました。

どなたかご存知の方、教えてください。

A 回答 (2件)

Engineクラスの表記のしかたがおかしい気がしますが。



いまいち何がしたいのかわかりませんが、
どのようなエラー(結果)がでてるのかを示していただけると、他の方も回答がしやすいと思います。

とりあえず、Engineクラスにデフォルトコンストラクターが無いのは問題だとおもいますよ。

<jsp:useBean id="E" scope="page" class="myPack.Engine" />

でインスタンスが作成できませんので。。
    • good
    • 0
この回答へのお礼

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クラスできちんとコンストラクタを作っていないからでしょうか?
エラーを読む限りではメソッドが無いと言われていますが、
なんのメソッドが必要なのかわかりません。。。

もしお気づきの点がありましたら、再び教えていただければ幸いです。

お礼日時:2006/08/08 16:43

とりあえず、



<td><jsp:getProperty name="E" property="intSuryo[i]" />個</td>




<td><%=E.getIntSuryo()[i]%>個</td>

これでいいと思います。

property="intSuryo[i]"

Engineクラスにはこのようなプロパティは存在しないのでエラーが出ると思いますよ。

この回答への補足

お礼に書いてしまったので、補足に書かせていただきます。

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

ありがとうございました。

補足日時:2006/08/10 07:33
    • good
    • 0
この回答へのお礼

akane_210さん、たびたびありがとうございます。

<td><%=E.getIntSuryo()[i]%>個</td>
ふむふむ。こういう書き方をするのですね。
書き方もなかなかわからず困っていました。
試してみましたが、エラーには変化がありませんでした。

>property="intSuryo[i]"
>Engineクラスにはこのようなプロパティは存在しないのでエラーが出ると思いますよ。
うーむ。この辺りもわかっていない(勘違い)のかもしれませんが、
public int[] getIntSuryo() {
return intSuryo;
}
この一節で、それを定義しているものだと思っていました。
同じ書き方でint型のプロパティを、JSPでgetできたもので。

配列型のプロパティの宣言(?)というのは、
Engineクラスにどのように書けばよいのでしょうか?

お礼日時:2006/08/09 07:31

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