HTMLとかXHTMLとかHTML5とかのテンプレートエンジンのThymeleafいい感じっぽいのでHello worldしてみます。
NetBeansでMavenのJavaアプリケーションのプロジェクトを作成して依存性の追加でthymeleafで検索するとorg.thymeleafが出てくるので、それを追加します。pom.xmlには以下のような記述が追加されます。
<dependency> <groupId>org.thymeleaf</groupId> <artifactId>thymeleaf</artifactId> <version>2.0.15</version> </dependency>
Thymeleafは、色んな場所からテンプレートを取得するためのTemplateResolverというものが定義されています。一番シンプルだと思うのはClassLoaderTemplateResolverだと思います。こいつにテンプレートエンジンのモード(HTML5だとかXHTMLだとか)をセットしたりテンプレートファイルのサフィックスを設定したりしてTemplateEngineを作ります。
テンプレートエンジンを作ったらContextにテンプレート内部で使用する変数とかを設定してprocessを呼び出せば完成です。
package okazuki.mavenproject6; import org.thymeleaf.TemplateEngine; import org.thymeleaf.context.Context; import org.thymeleaf.templateresolver.ClassLoaderTemplateResolver; public class App { public static void main(String[] args) { // クラスローダーからテンプレート探す ClassLoaderTemplateResolver r = new ClassLoaderTemplateResolver(); r.setTemplateMode("HTML5"); r.setSuffix(".html"); // テンプレートエンジンを作ってTemplateResolverを設定する TemplateEngine templateEngine = new TemplateEngine(); templateEngine.setTemplateResolver(r); // Contextにテンプレート内部で使う変数を設定して実行! Context ctx = new Context(); ctx.setVariable("message", "こんにちは世界"); String result = templateEngine.process("index", ctx); // 結果を表示 System.out.println(result); } }
テンプレートは、デフォルトパッケージにindex.htmlというファイルを作って以下のように書きました。
<!DOCTYPE html> <html> <head> <meta charset="UTF-8" /> <title></title> </head> <body> <div th:text="${message}">TODO write content</div> </body> </html>
th:textがThymeleaf固有の設定になります。ここらへんは、公式のドキュメントを参照のこと。
http://www.thymeleaf.org/documentation.html
Using Thymeleafの"4 STANDARD EXPRESSION SYNTAX"あたりを読むと捗ります。
実行すると以下のように、こんにちは世界が埋め込まれたHTMLが出力されます。
<!DOCTYPE html> <html> <head> <meta charset="UTF-8" /> <title></title> </head> <body> <div>こんにちは世界</div> </body> </html>
うん、いいね。