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 コメント:
コメントを投稿