ThymeleafでJavaのメソッドを呼び出す方法は?初心者向け解説
生徒
「Thymeleafのテンプレート内でJavaのメソッドを呼び出すことはできますか?」
先生
「はい、できますよ!Thymeleafは、Javaのメソッドを呼び出すための機能を提供しています。これを使うことで、テンプレートから直接Javaの処理を実行できます。」
生徒
「具体的にはどのように設定すればいいんですか?」
先生
「それでは、基本的な使い方から実例を交えて説明しましょう!」
1. ThymeleafでJavaのメソッドを呼び出す基本
Thymeleafでは、#で始まる「ユーティリティオブジェクト」や、Springの@Controllerから渡されたオブジェクトを使うことで、Javaのメソッドを呼び出すことができます。
例えば、以下のコードでは、StringUtils.capitalize()メソッドを使って文字列の先頭文字を大文字に変換しています。
<p th:text="${#strings.capitalize('thymeleaf')}"></p>
この例では、Thymeleafが提供する#stringsというユーティリティオブジェクトを使っています。このオブジェクトには、文字列操作に便利なメソッドが多数用意されています。
2. 独自メソッドを呼び出す方法
Springの@Controllerや@Serviceから渡されたオブジェクトを使って独自メソッドを呼び出すことも可能です。以下は、その例です。
@Controller
public class DemoController {
@GetMapping("/demo")
public String demo(Model model) {
model.addAttribute("helper", new Helper());
return "demo";
}
public static class Helper {
public String greet(String name) {
return "Hello, " + name + "!";
}
}
}
上記のようにModelにオブジェクトを追加し、Thymeleafテンプレートで以下のように使用します。
<p th:text="${helper.greet('Thymeleaf')}"></p>
この結果、画面には「Hello, Thymeleaf!」と表示されます。
3. メソッドチェーンの利用
メソッドチェーンを使って複数の処理を連続で実行することも可能です。以下はその例です。
<p th:text="${#strings.capitalize(helper.greet('user').toLowerCase())}"></p>
このコードでは、helper.greet()で返された文字列をすべて小文字に変換し、その後で先頭文字を大文字にしています。
4. null値や例外に対応する方法
メソッドを呼び出す際にnull値や例外が発生することがあります。こうした場合に安全に処理を行うために、th:ifや?:(Elvis演算子)を利用します。
<p th:text="${helper != null ? helper.greet('Thymeleaf') : 'デフォルトメッセージ'}"></p>
このコードでは、helperがnullの場合は「デフォルトメッセージ」を表示します。
5. 便利なユーティリティオブジェクトの活用
Thymeleafには、文字列操作の#strings以外にも、日付操作の#datesや数値操作の#numbersといった便利なユーティリティオブジェクトが用意されています。以下は、それらを組み合わせた例です。
<p th:text="${#strings.concat('Today is ', #dates.format(today, 'yyyy-MM-dd'))}"></p>
この例では、現在の日付を取得して文字列に結合しています。ユーティリティオブジェクトを活用することで、テンプレート内の記述が非常に簡潔になります。
6. まとめ
本記事では、Thymeleafを使用してJavaのメソッドを呼び出す方法を詳しく解説しました。#stringsなどのユーティリティオブジェクトを活用した基本的なメソッドの呼び出し方法から、独自のメソッドをSpringの@Controllerで渡してテンプレート内で利用する方法、さらにはメソッドチェーンやnull値への対応方法について学びました。
また、Thymeleafが提供する多くのユーティリティオブジェクト(#datesや#numbersなど)を使えば、テンプレートエンジンとしての機能を最大限に活用できることが分かりました。これにより、テンプレートのコードが簡潔で再利用性の高いものになります。
以下に、記事で紹介したサンプルコードをもう一度掲載しますので、ぜひご自身のプロジェクトで活用してください。
<p th:text="${#strings.capitalize('hello')}"></p>
<p th:text="${helper.greet('Thymeleaf')}"></p>
<p th:text="${#strings.concat('Today is ', #dates.format(today, 'yyyy-MM-dd'))}"></p>
<p th:text="${helper != null ? helper.greet('Guest') : 'デフォルトメッセージ'}"></p>
これらのコードは、実際のWebアプリケーション開発において役立つ実用的な例です。ThymeleafのテンプレートでJavaのメソッドを活用することで、柔軟性と効率性が大幅に向上します。
生徒
「今回の記事で、Thymeleafのテンプレート内でJavaのメソッドを呼び出す方法がよくわかりました!独自メソッドも使えるのは便利ですね。」
先生
「その通りです。特にSpringと組み合わせると、テンプレートでの柔軟な表示や処理が可能になります。ユーティリティオブジェクトも忘れずに活用してくださいね。」
生徒
「はい!次回はもっと複雑な処理や、メソッドチェーンを使った応用を試してみたいです。」
先生
「素晴らしいですね。ぜひ挑戦してみてください。また質問があれば聞いてくださいね!」