2009年12月29日火曜日

mobylet & Guice & T2 & Velocity on GAE/J

スズキです。

T2で"@Form(resolverClass=OvalFormResolver.class)"みたいな事をしようとすると、
結局、DIコンテナが必要になり(SimpleContainerAdapterではダメ)、
GAE/JならGuiceってことで、
http://d.hatena.ne.jp/mobylet/20090716/1247742912
"mobylet & T2 & Velocity on GAE/J"にGuiceも追加してみました。
http://blog.suz-lab.com/2009/12/multidevicefiltermobylet-t2-velocity-on.html

まず、WEB-INF/libに下記のjarを追加です。

guice-2.0.jar
guice-servlet-2.0.jar
guiceadapter-0.6.2-ga.jar

そしてweb.xmlの記述ですが、
"multi"と"t2"の両フィルターの間に、"guice"フィルターが入るようにします。

また、"t2"フィルターの"t2.container.adapter"パラメータは
"org.t2framework.t2.adapter.GuiceAdapter"にしておきます。

最終的なweb.xmlはこんな感じです。

--------【web.xml】--------
...
<context-param>
  <param-name>t2.encoding</param-name>
  <param-value>UTF-8</param-value>
</context-param>

<filter>
  <filter-name>mobylet</filter-name>
  <filter-class>org.mobylet.core.http.MobyletFilter</filter-class>
  <init-param>
    <param-name>mobylet.config.dir</param-name>
    <param-value>WEB-INF/mobylet/</param-value>
  </init-param>
</filter>

<filter>
  <filter-name>multi</filter-name>
  <filter-class>suz.lab.gae.filter.MultiDeviceFilter</filter-class>
</filter>

<filter>
  <filter-name>guice</filter-name>
  <filter-class>com.google.inject.servlet.GuiceFilter</filter-class>
</filter>

<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.feed.page</param-value>
  </init-param>
  <init-param>
    <param-name>t2.container.adapter</param-name>
    <param-value>org.t2framework.t2.adapter.GuiceAdapter</param-value>
  </init-param>
  <init-param>
    <param-name>t2.exclude-resources</param-name>
    <param-value>txt, css, js, ico</param-value>
  </init-param>
</filter>

<filter-mapping>
  <filter-name>mobylet</filter-name>
  <url-pattern>/*</url-pattern>
</filter-mapping>

<filter-mapping>
  <filter-name>multi</filter-name>
  <url-pattern>/*</url-pattern>
</filter-mapping>

<filter-mapping>
  <filter-name>guice</filter-name>
  <url-pattern>/*</url-pattern>
</filter-mapping>

<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>
</servlet>

<servlet-mapping>
  <servlet-name>velocity</servlet-name>
  <url-pattern>*.html</url-pattern>
</servlet-mapping>

--------
http://code.google.com/p/suz-lab-gae/source/browse/trunk/suz-lab-feed/war/WEB-INF/web.xml?r=75

ようやく、「OValを使ったPageクラスでのバリデーション」の準備が整った…

【残タスク】
- OValを使ったPageクラスでのバリデーション
- API用のJSONフォーマット
- cron/task処理結果ページのテンプレート
- Page関係の抽象クラス再考

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

0 コメント: