Slim3でFreemarkerを使ってみる

Slim3で、久しぶりにJSPを触っているけれど、やっぱりFreemarkerのほうが
使い勝手がよく感じるため、変更してみることにしました。


以下からFreemarkerをダウンロードする
http://freemarker.sourceforge.net/freemarkerdownload.html


※ここに上がっているFreemarkerにはバグがあるらしく、
assignを使うとエラーになってしまった。

以下のgaefreemarker.zipファイル内に入っているfreemarker-gae-pre2.jarを使うことで、正常に動作した。
http://code.google.com/p/googleappengine/issues/detail?id=3157


slim3は、以下のSVNからプロジェクトとしてチェックアウトする。
http://slim3.googlecode.com/svn/trunk/slim3-blank


プロジェクト内のweb.xmlに以下の記述を加える。

<servlet>
	<servlet-name>freemarker</servlet-name>
	<servlet-class>freemarker.ext.servlet.FreemarkerServlet</servlet-class>
	
	<init-param>
		<param-name>TemplatePath</param-name>
		<param-value>/</param-value>
	</init-param>
	<init-param>
		<param-name>NoCache</param-name>
		<param-value>true</param-value>
	</init-param>
	<init-param>
		<param-name>ContentType</param-name>
		<param-value>text/html; charset=UTF-8</param-value>
	</init-param>
</servlet>

<servlet-mapping>
	<servlet-name>freemarker</servlet-name>
	<url-pattern>*.ftl</url-pattern>
</servlet-mapping>

<security-constraint>
	<web-resource-collection>
		<url-pattern>*.ftl</url-pattern>
	</web-resource-collection>
	<auth-constraint></auth-constraint>
</security-constraint>


あとは、Controller内でreturn forward("index.ftl");のように、
ftlファイル名を指定すれば動きます。


Eclipse用のFreemarker PluginのインストールURLは以下
http://download.jboss.org/jbosstools/updates/development/