- - PR -
Velocityがうまく働かない
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2006-01-21 02:51
お世話になっています。
現在、Velocityを勉強しているのですが、上手くいかないところがあります。 WEB-INF/src/veloToolboxの下に作成したPipeWrench.javaのgetSize()メソッドが返すStringをVelocityを使って表示するというものなのですが、vmファイルをブラウザで見ても表示されません。 Tomcatのバージョンは4.0.28、Velocityは1.4、Velocity-Toolsは1.2、Eclipse3.1で開発しています。 ソースは以下の通りとなっております。なお、ログファイルやコンソール画面などを調べてみましたが、特にエラーメッセージの類はありませんでした。 [[PipeWrench.java]] package veloToolbox; public class PipeWrench { public String getSize(){ return "パイプレンチ"; } } [[PipeWrench.vm]] <html> <head> <title>パイプレンチテスト</title> </head> <body> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> $wrench.getSize() </body> </html> [[toolbox.xml]] <?xml version="1.0" encoding="utf-8"?> <toolbox> <tool> <key>wrench</key> <class>veloToolbox.PipeWrench</class> </tool> </toolbox> [[web.xml]] <web-app> <servlet> <servlet-name>velocity</servlet-name> <servlet-class>org.apache.velocity.tools.view.servlet.VelocityViewServlet</servlet-class> <init-param> <param-name>org.apache.velocity.toolbox</param-name> <param-value>/WEB-INF/toolbox.xml</param-value> </init-param> <init-param> <param-name>org.apache.velocity.properties</param-name> <param-value>/WEB-INF/velocity.properties</param-value> </init-param> <load-on-startup>10</load-on-startup> </servlet> <servlet-mapping> <servlet-name>velocity</servlet-name> <url-pattern>*.vm</url-pattern> </servlet-mapping> </web-app> どうぞよろしくお願いします。 | ||||
|
投稿日時: 2006-01-21 03:21
表示できない、とは "$wrench.getSize()" の部分だけでしょうか?
他の部分のhtmlは受信できる? | ||||
|
投稿日時: 2006-01-21 12:29
説明が足りませんでした。 正確に言うと、vmファイルをブラウザで見ると"$wrench.getSize()"という文章が表示されます。ブラウザでソースコードを確認すると、htmlはきちんと受信しております。 | ||||
|
投稿日時: 2006-01-21 13:39
するとVelocityのサーブレットを介さずに配信されているということですね。
-verbose:class とかでサーブレットがちゃんとロードされているか確認してみてはいかがでしょう? あと、「WEB-INF/src/veloToolboxの下に作成」とありますが、コンパイル済みのクラスは WEB-INF/classes 以下に配置されていますか? | ||||
|
投稿日時: 2006-01-22 02:19
返答頂きありがとうございます。 とりあえず、Windowsのコマンドラインから「java -verbose:class | find "velocity"」とやって見た所、該当する行が有りませんでしたので、どうやらサーブレットがロードされていないようです。 お恥ずかしい限りですが、サーブレットをロードするためにはどうしたらよいのでしょうか? | ||||
|
投稿日時: 2006-01-22 02:28
まずVelocity以前にサーブレットの勉強をしましょう。
VelocityServletを使ったのサンプルアプリケーションをデプロイしてどこが違うか見比べるのも良いかもしれませんね。 [ メッセージ編集済み 編集者: インギ 編集日時 2006-01-22 02:28 ] | ||||
|
投稿日時: 2006-01-22 11:46
ん、「「java -verbose:class」だけで Tomcat でロードされているクラスが一覧表示されますか??
| ||||
|
投稿日時: 2006-01-22 12:59
ちょっと用事があって今日初めて Velocity 触ってみました。
コンテクストに登録されていないオブジェクトを呼び出すような式を書いた場合はエラーとならずそのまま表示されるようですね。 ログファイルにエラーメッセージはない、とのことですが Velocity のログはご覧になりましたか? Velocityのログはデフォルトでカレントディレクトリに velocity.log として吐き出されるようです。 wrench がコンテクストに設定されていなければ以下のような警告メッセージがでます。 Sat Jan 21 19:57:05 PST 2006 [warn] org.apache.velocity.runtime.exception.ReferenceException: reference : template = PipeWrench.vm [line 81,column 1] : $wrench.getSize() is not a valid reference. |