こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

JSPとjavaの問題

ResultSet rs = db.getResultSet("SELECT * FROM SHAINLIST ");

ArrayList list = new ArrayList();
while(rs.next()) {
int state = rs.getInt("attendance");
list.add(new Integer(state));
}
int[] in = new int[list.size()];
for (int i = 0; i < list.size(); i++) {
in[i] = ((Integer)list.get(i)).intValue();
}
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>JSPでDB接続</title>
</head>
<body>
<table>
<tr><td>欠席</td><td>><%= countNum(-1, in) %></td></tr>
<tr><td>未定</td><td><%= countNum(-1, in) %></td></tr>
<tr><td>出席</td><td><%= countNum(-1, in) %></td></tr>
</table>
以下のエラーがでてきますが、どういう意味でしょうか。
org.apache.jasper.JasperException: JSPのクラスをコンパイルできません:

JSPファイル: /jsp/tokei.jsp の中の26行目でエラーが発生しました
The method countNum(int, int[]) is undefined for the type tokei_jsp
23: </head>
24: <body>
25: <table>
26: <tr><td>キ鄲ハ</td><td>><%= countNum(-1, in) %></td></tr>
27: <tr><td>フ、ト�</td><td>3</td></tr>
28: <tr><td>スミタハ</td><td>3</td></tr>
29: </table>
よろしくおねがいします。

投稿日時 - 2007-04-27 12:01:34

QNo.2954274

すぐに回答ほしいです

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

JSPといっても実体はjavaになります。
で、ご質問者様のJSPソースですとメソッド内でメソッドを定義していることになりますので、これはできません。

で、JSPでどうやるかというと
No1の回答を良く見るとわかるかと思いますが、1行目で
<%!  ←←← びっくりマークがついていますね!
ということで、これをやると<%!から次の%>まではJSPのメイン処理メソッド外での定義となりますので
メソッドが定義できるわけです。

話がよくわからん!ということでしたら、JSPでメソッドを定義する場合は<%!で書くんだという意識で構いません。
興味がございましたら調べてみることをお勧めします。

投稿日時 - 2007-04-27 14:37:36

お礼

なんども 親切でありがとうございます。
メソッドの定義は<%! %>ですね。
やっとうまく表示できました。
ありがとうございました。

投稿日時 - 2007-04-27 14:47:43

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

先ほどの質問に回答したものです。

JSPにcountNumメソッドって定義されました?
例えば↓でしたら動くことを確認していますが・・・
<%!
private static int countNum(int v, int[] values) {
int cnt = 0;
for (int i = 0; i < values.length; i++) {
if (values[i] == v) {
cnt++;
}
}
return cnt;
}
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<body>
<table>
<tr><td>欠席</td><td>><%= countNum(-1, new int[]{1,2,3,4,5}) %></td></tr>
</table>
</body>
</html>

投稿日時 - 2007-04-27 14:04:40

補足

なんどもすみません。countNum定義してたんですが、コンパイルできませんというエラーが出ます。。
org.apache.jasper.JasperException: JSPのクラスをコンパイルできません:

JSPファイル: /jsp/tokei.jsp の中の8行目でエラーが発生しました
Syntax error on token "(", ; expected
5: MyDBAccess db = new MyDBAccess();
6: db.open();
7: ResultSet rs = db.getResultSet("SELECT * FROM SHAINLIST ");
8: private static int countNum(int v, int[] values) {
9: int cnt = 0;
10: for (int i = 0; i < values.length; i++) {
11: if (values[i] == v) {
ご教授ください。

投稿日時 - 2007-04-27 14:12:23

あなたにオススメの質問