2009年12月11日金曜日

GAE/J & Velocity & T2

スズキです。

ようやく、やりたいことができました。

下記で、"/test.html"でアクセスしたら、TestPage.javaでセットされたパラメータが、
Velocityテンプレートに渡されて、パラメータが差し込まれた結果が表示されるってやつです。

必要最小限の"jar"は下記のような感じになります。

--------【WEB-INF/lib】-------
appengine-api-1.0-sdk-1.2.8.jar
appengine-api-labs-1.2.8.jar
commons-0.6.5-ga.jar
commons-collections-3.2.jar
commons-digester-1.8.jar
commons-lang-2.2.jar
commons-logging-1.1.jar
datanucleus-appengine-1.0.4.final.jar
datanucleus-core-1.1.5.jar
datanucleus-jpa-1.1.5.jar
geronimo-jpa_3.0_spec-1.1.1.jar
geronimo-jta_1.1_spec-1.1.1.jar
jdo2-api-2.3-eb.jar
slf4j-api-1.5.6.jar
slf4j-jcl-1.5.6.jar
t2-0.6.2-ga.jar
velocity-1.5.jar
velocity-tools-view-1.4.jar
--------

web.xmlは以下のようにします。
".html"の拡張子が、t2、velocityにかかるようにしています。

--------【WEB-INF/web.xml】-------
...
<context-param>
  <param-name>t2.encoding</param-name>
  <param-value>UTF-8</param-value>
</context-param>
<filter>
  <filter-name>t2</filter-name>
  <filter-class>org.t2framework.t2.filter.T2Filter</filter-class>
  <init-param>
    <param-name>t2.rootpackage</param-name>
    <param-value>suz.lab.page</param-value>
  </init-param>
  <init-param>
    <param-name>t2.container.adapter</param-name>
    <param-value>org.t2framework.t2.adapter.SimpleContainerAdapter</param-value>
  </init-param>
  <init-param>
    <param-name>t2.eagerload</param-name>
    <param-value>true</param-value>
  </init-param>
  <init-param>
    <param-name>t2.exclude-resources</param-name>
    <param-value>css, js, ico</param-value>
  </init-param>
</filter>
<filter-mapping>
  <filter-name>t2</filter-name>
  <url-pattern>/*</url-pattern>
</filter-mapping>
<servlet>
  <servlet-name>velocity</servlet-name>
  <servlet-class>org.apache.velocity.tools.view.servlet.VelocityLayoutServlet</servlet-class>
  <init-param>
    <param-name>org.apache.velocity.properties</param-name>
    <param-value>/WEB-INF/velocity.properties</param-value>
  </init-param>
</servlet>
<servlet-mapping>
  <servlet-name>velocity</servlet-name>
  <url-pattern>*.html</url-pattern>
</servlet-mapping>
<welcome-file-list>
  <welcome-file>index.html</welcome-file>
</welcome-file-list>
...
--------

"velocity.properties"はレイアウト機能使うってことで。

--------【WEB-INF/velocity.properties】--------
input.encoding=UTF-8
output.encoding=UTF-8
resource.loader = file
file.resource.loader.class=org.apache.velocity.runtime.resource.loader.FileResourceLoader
file.resource.loader.path=WEB-INF/vm/page
tools.view.servlet.layout.directory=/
tools.view.servlet.layout.default.template=layout.html
--------

t2関係のコード(Java)は"test:hoge"をセットして、
test.html(velocity)にフォワードしています。

--------【suz.lab.page.TestPage.java】--------
...
@Page("test.html")
public class TestPage {
  @Default
    public Navigation index(Request request) {
      request.setAttribute("test", "hoge");
      return Forward.to("/test.html");
  }
}
--------

テンプレートはt2から渡されたパラメータ(test)の内容を表示するだけです。

--------【WEB-INF/vm/page/test.html】--------
$test
--------

次は、フィード読み込んで表示するやつ作ろう。

--------
http://www.suz-lab.com

0 コメント: