2009年12月10日木曜日

GAE/JでVelocityLayoutServlet

スズキです。

こちらで、GAE/JにてVelocityが使えるようになったので、
http://blog.suz-lab.com/2009/12/gaejvelocity.html
今度は、レイアウト機能が使える、VelocityLayoutServletに挑戦です。
http://velocity.apache.org/tools/releases/1.4/view/layoutservlet.html

まずは、web.xmlを下記のように変更です。

--------【WEB-INF/web.xml】--------
<servlet-class>org.apache.velocity.tools.view.servlet.VelocityViewServlet</servlet-class>

<servlet-class>org.apache.velocity.tools.view.servlet.VelocityLayoutServlet</servlet-class>
--------

次にvelocity.propertiesに下記を追記です。

--------【WEB-INF/velocity.properties】--------
...
tools.view.servlet.layout.directory=/
tools.view.servlet.layout.default.template=layout.html
--------

"tools.view.servlet.layout.directory"はレイアウトのテンプレート置き場を指定します。
指定方法は"file.resource.loader.path"からの相対パスとなり、
上記は"file.resource.loader.path"と同じ場所を指定していることになります。

"tools.view.servlet.layout.default.template"は
デフォルトで適用されるレイアウトのテンプレートです。

※ URLの拡張子をhtmlにしたかったので、VMの拡張子はhtmlとしています。
※ サーブレットマッピングも下記のようにhtml拡張子に対して行っています。
<servlet-mapping>
  <servlet-name>velocity</servlet-name>
  <url-pattern>*.html</url-pattern>
</servlet-mapping>


そして、layout.htmlは下記のように作成します。

--------【WEB-INF/vm/page/layout.html】--------
<html>
  <body>
    <div id="wrapper">
      <div id="header">#parse("header.html")</div>
      <div id="content">$screen_content</div>
      <div id="footer">#parse("footer.html")</div>
    </div>
  </body>
</html>
--------

※ #parse(...)外部のテンプレートを取り込めます。
※ $screen_contentに実際にURLで指定だれたコンテンツが入ります。

次は、いよいよT2との組み合わせです。

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

0 コメント: