エキサイト株式会社メディアプラットフォーム事業部エンジニアの佐々木です。テンプレートエンジンの関数のみだと足りないのでSpringBootの@Component
を使用して拡張します。
コード
現在時刻を返すだけの簡単なヘルパー関数を作ってみます。コードはJavaで書きます。SpringBootのDIコンテナは、@Component
がつけられたクラス名のlowerCamel
で、DIコンテナに格納する暗黙のルールがあります。なので、@Component
の宣言時に命名もセットにすると視認性が高くなるかなと思います。
@Component("dateTimeComponent") public class DateTimeComponent { DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss"); public String now() { return LocalDateTime.now().format(dateTimeFormatter); } }
ThymeleafのHTMLコードは下記のようになります。
<!DOCTYPE html> <html lang="en" xmlns:th="http://www.thymeleaf.org"> <head> <title>Title</title> </head> <body> <h2> 時刻表示: [[ ${@dateTimeComponent.now()} ]] </h2> </body> </html>
${@dateTimeComponent.now()}
のように、@+Bean名
を書くだけで、DIされたヘルパー関数が読み込めるようになります。application.ymlに紐づくデータも読み込みめますので、本番環境と開発環境で差があるもの(ex.URL、パス)などを十分吸収してくれるものになります。
まとめ
結構簡単な実装で、ヘルパー関数を作ることができます。他にもバリデーションの正規表現などをJavaScriptに渡したり、デバッグ情報の表示用だったりなど、汎用性も高く作ることが可能です。ぜひ使ってみてください。