- - PR -
jsp:useBeanの行でエラーとなってしまう
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2004-10-31 12:41
こんにちは、
JSP・サーブレット・javaBeansを組み合わせて、J2EEっぽく プログラミングを行う勉強を行っているのですが、壁にぶつかっています。 どうか皆さまお力をお貸し下さいませ。。。 内容ですが、 JSPの以下の行で実行時にエラーが発生してしまいます。 <jsp:useBean id="pageNumber" class="java.lang.Integer" scope="request" /> Eclipse による編集時や、Lomboz によるデプロイ時にはエラーは発生しません。 Webブラウザで実行したタイミングでエラーとなります。 Tomcat のバージョンは 5.0.28 です。 もしかして、バージョン 4 でないとダメなのでしょうか? ビルド時にエラーがでないので、おそらくTomcat側の設定が悪いのではないかと いろいろ調べているのですが解決にいたりません、どなたかヘルプをお願いします。 他に必要な設定資料があれば、ご指定いただければ提示しますのでよろしくお願いします。 ※実行時エラーメッセージ ------------------------------------------------------ 説明 The server encountered an internal error () that prevented it from fulfilling this request. 例外 org.apache.jasper.JasperException: /page/showList.jsp(9,0) org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:39) org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:409) org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:150) org.apache.jasper.compiler.Generator$GenerateVisitor.visit(Generator.java:1227) org.apache.jasper.compiler.Node$UseBean.accept(Node.java:1116) org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2163) org.apache.jasper.compiler.Node$Visitor.visitBody(Node.java:2213) org.apache.jasper.compiler.Node$Visitor.visit(Node.java:2219) org.apache.jasper.compiler.Node$Root.accept(Node.java:456) org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2163) org.apache.jasper.compiler.Generator.generate(Generator.java:3272) org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:244) org.apache.jasper.compiler.Compiler.compile(Compiler.java:470) org.apache.jasper.compiler.Compiler.compile(Compiler.java:451) org.apache.jasper.compiler.Compiler.compile(Compiler.java:439) org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:511) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:295) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236) javax.servlet.http.HttpServlet.service(HttpServlet.java:802) vacation6.VacationController.doPost(VacationController.java:77) vacation6.VacationController.doGet(VacationController.java:50) javax.servlet.http.HttpServlet.service(HttpServlet.java:689) javax.servlet.http.HttpServlet.service(HttpServlet.java:802) filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:87) ------------------------------------------------------ ※ [showList.jsp] ------------------------------------------------------ <%@ page language="java" import="java.util.*" pageEncoding="Windows-31J" contentType="text/html; charset=Windows-31J" %> <%@ page import="vacation6.*" %> <jsp:useBean id="vacationTable" class="vacation6.VacationTable" scope="application" /> <jsp:useBean id="pageNumber" class="java.lang.Integer" scope="request" /> <jsp:useBean id="items" class="java.util.List" scope="request" /> <jsp:useBean id="hasNextPage" class="java.lang.Boolean" scope="request" /> ↓続く ------------------------------------------------------ 環境 PC WinXP eclipse3.01 lomboz.301 tomcat5.0.28 j2sdk 1.4.2_05 |
|
投稿日時: 2004-10-31 22:41
こんばんは。
的を外していたら、すみません。 <jsp:useBean id="pageNumber" class="java.lang.Integer" scope="request" /> ですが、pageNumberにnullが来ているということは、ありませんか? 試しに、サーブレットで、 pageNumber = new Integer(1); としたものをrequestにセットしてみてください。 |
|
投稿日時: 2004-11-01 09:34
パット見間違いないように見えますね。実行時ではなくコンパイル時のエラーのようです。
JSP 中に文法的におかしな箇所はありませんか? |
|
投稿日時: 2004-11-01 21:26
こんばんは。
的を外したようで。 今日、会社で前に経験したエラーのメッセージと比較したら別のものでした。 すみません。 私が経験したのは、jsp:useBeanでIntegerを使っているJSPがあった場合に、WASのバージョンをV5にアップすると、そこにnullが来ていると、イニシャライズに失敗というような、Exceptionが出るものでした。nullを送らないようにして対応した記憶があったもので。 原因不明のコンパイル時エラーだとすると、私の場合、JavaScriptのエラーが出ようが、HTMLが壊れようが、無視して、エラーが出なくなるまで、ソースを削って、場所を特定する方法をとります。参考になれば・・・ |
|
投稿日時: 2004-11-01 23:08
こんばんは。
JSPのuseBeanアクションで指定するオブジェクトはJavaBeans仕様に従っている必要があります。 その一つは、デフォルトコンストラクタ(引数なしコンストラクタ)が定義されていることがですが、 APIドキュメントを見ると、java.lang.Integer にはデフォルトコンストラクタは定義されていない ように見えます。 もし、それが原因であるなら、JSPのuseBeanにjava.lang.Integer を直接指定するのではなく、 java.lang.Integerのフィールドを持つbeanクラスを定義して、それをuseBeanに指定すれば 問題が解決すると思います。 新たに定義するbeanクラスには、デフォルトコンストラクタの定義を忘れずに 。 # この問題は、Tomcat5系で発生します。(Tomcat4系では発生しません。) |
|
投稿日時: 2004-11-02 10:50
こんにちは
アドバイスありがとうございます。 早速、Integerフィールドを持つBeanを作成し、トライしたところこの行でのエラーは出なくなりました。 今回、以下のように修正しました。 MyInteger というクラスを作成し、 public Integer mint; というメンバ変数を作成しました。 デフォルトコンストラクタも作成しました。 それで、JSPの方を <jsp:useBean id="pageNumber" class="vacation6.MyInteger" scope="request" /> <%=pageNumber.mint.intValue()+1%> といった感じで動かしたところ、今回のエラーはなくなりました。(他のエラーが出で別途調べてますが。。。) ただ、Beanクラスのメンバ変数 mint をpublicにして、とりあえず動かしましたが、 こういう場合の正しいBeanの作り方はどんな風にするべきなのでしょうか? 初心者なので申し訳ございません。。。 |
1