dポイントプレゼントキャンペーン実施中!

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>
よろしくおねがいします。

A 回答 (2件)

JSPといっても実体はjavaになります。


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

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

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

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

お礼日時:2007/04/27 14:47

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



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>

この回答への補足

なんどもすみません。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
    • good
    • 0

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