- - PR -
Tomcat4.0.1に変更したら・・・。
| 投稿者 | 投稿内容 | ||||||||
|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2002-10-23 20:44
初めまして。こんばんは。
アレクと申します。 最近、開発環境を Tomcat3.2.1 から 4.0.1 に変更したのですが、 どうも JSP がうまく動きません。 3.2.1 ではちゃんと動いていたんですが 4.x になってからは コンパイルエラーが表示されるようになってしまいました。 どうも、<jsp:useBean> タグがうまくいっていないようなのですが、 タグの書き方に何か変更があったのでしょうか? それとも、何か他の要因があるのでしょうか? どなたか、教えて頂けないでしょうか。 | ||||||||
|
投稿日時: 2002-10-23 21:51
<jsp:useBean>
をどのように記述したかを書いていただけると 何かわかるかもしれません。 | ||||||||
|
投稿日時: 2002-10-23 22:56
そうですよね〜。すみませんでした。 それでは、 下記 JSP は、エラーメッセージを保存してある ErrorMessage Beans から、 値を読み込んで、JSP で表示するという簡単なものです。 <%@ page contentType="text/html; charset=Shift_JIS" %> <jsp:useBean id="EM" class="ErrorMessage" scope="session" /> <html> <head><title>エラー</title></head> <body> エラー内容:<%=EM.getErrorMessage()%> </body> </html> 自分のコードが間違ってるんですかね〜? 何か分かりましたら教えてください。 [ メッセージ編集済み 編集者: アレク 編集日時 2002-10-23 23:03 ] [ メッセージ編集済み 編集者: アレク 編集日時 2002-10-23 23:05 ] | ||||||||
|
投稿日時: 2002-10-24 00:42
どこかで見たことのある現象です。
パッケージ指定なしのクラスをJSPから呼ぶ場合 コンパイルが通らないというやつかな? jspをコンパイルする際、パッケージをorg.apache.なんとか パッケージにするため、明示的にimportしないと コンパイルできないという。 <%@page import="ErrorMessage" %> を書くと動いたりしません? あと、コンパイルエラーの内容も書いてくださいね。 | ||||||||
|
投稿日時: 2002-10-24 23:26
amnaky さん、ありがとうございます。 確かに、パッケージの指定をするとちゃんと動きました。 でも、以前はこんな設定必要なかった気が・・・。 やっぱり Tomcat 4.x からは何か変わったんですかね〜。 そういえば、JSP タグでもう一つ分からないのがありました。 <jsp:getProperty>なんですが、これも以前と同じ方法では使えなくなってしまった? 例えば、 <%@ page contentType="text/html; charset=Shift_JIS" %> <jsp:useBean id="EM" class="db.ErrorMessage" scope="request"/> <html> <head><title>エラー</title></head> <body> エラー内容:<jsp:getProperty name="EM" property="error" /> </body> </html> と、書くと以前は、通っていたはずなのにエラーが生じてしまいます。 エラー内容は、 Apache Tomcat/4.0.1 - HTTP Status 500 - Internal Server Error type Exception report message Internal Server Error description The server encountered an internal error (Internal Server Error) that prevented it from fulfilling this request. exception org.apache.jasper.JasperException: タイプ 'db.ErrorMessage' のbean中の属性 'error' の情報を発見できませんでした と、いうものです。 ちゃんと、ErrorMessage Beans の中で、errorプロパティも アクセスメソッドも設定してあるんですけどね〜。 何ででしょうか? やっぱり、Tomcat4.x は何かが違う!? | ||||||||
|
投稿日時: 2002-10-25 00:46
scopeがもともとのsessionから
次のではrequestとなっていますが、ServletRequestには ErrorMessageをセットしてるんですよね。 あと、もともとのやつでは <%=EM.getErrorMessage()%> としていますが、 error プロパティもあるんですか? getError()を実装しているんですよね。 うーん、ちょっとわからないですね。 何かミスがあるとしか思えません。 Tomcat3と4が違うというのは全くそのとおりです。 4からCATALINAという全く違うアーキテクチャになってます。 Servlet2.3,JSP1.2を実装している点も違いますし。 同じ4でもディレクトリ構成とかも変わりますし、 その都度ReleaseNoteを見て確認するのがいいと思います。 | ||||||||
|
投稿日時: 2002-10-25 06:49
ちゃんと実装してるんですけどね〜。 とか、思いつつもう一度JSPを確認してみたら・・・。 ぶふー!getError()実装してないやんか〜!! getError()の実装をすっかり忘れていたようでした・・・。 ということで、getError()を実装すると、 <jsp:getProperty>もちゃんと動きました。 結局(やっぱり)、自分が間違っていたのね〜!(爆) amnakyさん。本当に申し訳ありませんでした。
確かに。そうですよね。 これからはReleaseNoteをちゃんとチェックするようにしたいと思います。 ところで、もう一つ疑問が・・・。(何度もすみません) 今回の例だと、 <%= EM.getErrorMessage() %> <jsp:getProperty name="EM" property="error" /> の二つを利用することで、どちらも同じ結果を得ることが出来たわけです。 では、どちらを使った方が良いのか? または、場面によって使い分ける必要があるのか? 等、新たな疑問がわき上がってまいりました。 ご意見をお聞かせ下さい。 [ メッセージ編集済み 編集者: アレク 編集日時 2002-10-25 07:05 ] | ||||||||
|
投稿日時: 2002-10-25 10:55
正確な動きの違いについてはわからないですが、
条件がそろってれば本質的には変わらないんじゃないでしょうか。 getterを実装してない場合や、 a.getB().getC()のようにとらなきゃいけない場合とかは <%=%>を使ったほうが早いですよね。 タグライブラリを使う手もありますが。 見た目上、 scliptletはなるべくないほうがいいというのは( デザイナーとの共同作業、デバッグの容易さにおいて) よく言われますが、 その辺もやりやすいルールに統一すれば大丈夫でしょう。 | ||||||||
