Seasar DI Container with AOP

テンプレートエンジンをVelocityに切り替える

S2Maiは、初期状態ではテンプレートエンジンとしてFreeMarkerを利用していますが、これをVelocityに替える事が出来ます。

セットアップ

依存jarの削除・追加

Velocityの以下のjarをクラスパスに追加して下さい。

  • velocity-x.x.jar
  • velocity-tools-generic-x.x.jar

FreeMarkerのjarは不要になりますので、削除して構いません。

Maven2からご利用の方は、pom.xmlのdependency要素を以下のようにして下さい。

<dependency>
  <groupId>org.seasar.mai</groupId>
  <artifactId>s2mai</artifactId>
  <version>x.x.x</version>
  <exclusions>
    <exclusion>
      <artifactId>freemarker</artifactId>
      <groupId>freemarker</groupId>
    </exclusion>
  </exclusions>
</dependency>
<dependency>
  <groupId>velocity</groupId>
  <artifactId>velocity</artifactId>
  <version>x.x</version>
  <type>jar</type>
</dependency>
<dependency>
  <groupId>velocity-tools</groupId>
  <artifactId>velocity-tools-generic</artifactId>
  <version>x.x</version>
  <type>jar</type>
</dependency>

各versionは適宜指定して下さい。

diconファイルの編集

s2mai-x.x.x.jarの中にあるmailTemplate.diconを取り出し、ルートパッケージに置いて、下記の様に編集して下さい。

mailTemplate.dicon(編集前)
<components namespace="mailTemplate" >
    <!--     FreeMarker   -->
    <include path="org/seasar/mai/template/freemarker.dicon"/>

    <!--     Velocity   -->
    <!--
    <include path="org/seasar/mai/template/velocity.dicon"/>
    -->
</components>
mailTemplate.dicon(編集後)
<components namespace="mailTemplate" >
    <!--     Velocity   -->
    <include path="org/seasar/mai/template/velocity.dicon"/>
</components>

freemarker.diconの代わりに、velocity.diconをincludeする形にします。

テンプレートの書き方

ファイル名の命名規則はFreeMarkerの場合と変わりませんが、拡張子は「vm」になります。例えば、TestMai#sendMail()が読み込むテンプレートは、Maiと同じパッケージ内の「TestMai_sendMail.vm」です。

TestMai_sendMail.vm
Subject: テストメールです。

$data.nameさんこんにちは。

テンプレート内で引数Dtoを表す要素名は「data」固定なのはFreeMarker利用時と一緒です。詳細はこちらを参照して下さい。