2008-04-22
SAStruts + Velocity (1)
SAStruts | |
![]()
先日SAStrutsのセミナーを受けてきました。
SAStruts入門セミナーを開催しました。 - Developer☆STYLE
このセミナーをきっかけにSAStrutsを勉強しはじめたのですが、
私の現場ではStruts+Velocityで開発を行っているので、SAStrutsと
Velocityが連携できるか調査しました。
必要なモジュールのダウンロード
velocity-tools-1.2.zip
必要なファイルのマージ
まず、sa-struts-blank-1.0.2-rc2.zipを展開します。
次に、velocity-tools-1.2.zipの中にある以下のファイルを追加して行きます。
sslext-1.2.jar
velocity-1.4.jar
velocity-tools-1.2.jar
velocity-tools-generic-1.2.jar
velocity-tools-view-1.2.jar
webapp/WEB-INF/web.xml
webapp/WEB-INF/toolbox.xml
webapp/WEB-INF/VM_global_library.vm
webapp/WEB-INF/velocity.properties
sa-struts-blank-1.0.2-rc2の中にある以下のファイルは削除します。
設定の修正
webapp/WEB-INF/web.xml の修正
→以下の記述を追加
<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>
webapp/WEB-INF/toolbox.xml の修正
→以下の記述を追加
<tool> <key>escape</key> <scope>application</scope> <class>org.apache.velocity.tools.generic.EscapeTool</class> </tool>
webapp/WEB-INF/velocity.properties の修正
→以下の記述を追加・修正
input.encoding=UTF-8 output.encoding=UTF-8 default.contentType=text/html; charset=UTF-8 webapp.resource.loader.cache = false velocimacro.library = WEB-INF/VM_global_library.vm
サンプルの作成
sa-struts-tutorial-1.0.2-rc2 に含まれるaddサンプルをVelocityに移植して動作確認を行います。
まず、Actionクラスを作成。
package tutorial.action; import org.seasar.struts.annotation.Execute; import org.seasar.struts.annotation.IntegerType; import org.seasar.struts.annotation.Required; public class AddAction { @Required @IntegerType public String arg1; @Required @IntegerType public String arg2; public Integer result; @Execute(validator = false) public String index() { return "add.vm"; } @Execute(input = "add.vm") public String submit() { result = Integer.valueOf(arg1) + Integer.valueOf(arg2); return "add.vm"; } }
次に、vmファイルを作成。
<html> <head> <title>Velocity</title> <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> </head> <body> #errorMarkup() <form name="velocityActionForm" method="post" action="$link.setRelative("/add/")"> <input type="text" name="arg1" value="$!arg1"> + <input type="text" name="arg2" value="$!arg2"> = $!escape.html($!result)<br /> <input type="submit" name="add" value="足し算"> </form> </body> </html>
動作確認
とりあえず、うまく動いているようです。
ただし、vmファイルの修正を動的に検知してくれない時があります。
何か設定が必要なんでしょうか?
- 4 http://d.hatena.ne.jp/keyworddiary/SAStruts
- 4 http://d.hatena.ne.jp/keyworddiary/Seasar
- 2 http://d.hatena.ne.jp/keyword/SAStruts
- 2 http://d.hatena.ne.jp/keyword/Seasar
- 2 http://www.google.co.jp/reader/view/
- 1 http://d.hatena.ne.jp/i-takehiro
- 1 http://d.hatena.ne.jp/keyword/jar
- 1 http://reader.livedoor.com/reader/
- 1 http://www.google.com/reader/view/user/02683275801844553733/state/com.google/reading-list
