IntelliJでThymeleafの補完が効くように設定する

エキサイト株式会社メディア事業部佐々木です。エキサイトHDアドベントカレンダー2023の15日目を担当させていただきます。メディア事業部では、SpringBoot/ThymeleafでMPAの開発を行っているところもあるのですが、HTML上での補完の効きが悪いというのがあります。これを設定することである程度補完が効くようになります。その設定をご紹介します。

前提

## Java
$ java --version
openjdk 17.0.9 2023-10-17 LTS
OpenJDK Runtime Environment Corretto-17.0.9.8.1 (build 17.0.9+8-LTS)
OpenJDK 64-Bit Server VM Corretto-17.0.9.8.1 (build 17.0.9+8-LTS, mixed mode, sharing)

## Gradle
$ ./gradlew --version
------------------------------------------------------------
Gradle 8.5
------------------------------------------------------------

Build time:   2023-11-29 14:08:57 UTC
Revision:     28aca86a7180baa17117e0e5ba01d8ea9feca598

Kotlin:       1.9.20
Groovy:       3.0.17
Ant:          Apache Ant(TM) version 1.10.13 compiled on January 4 2023
JVM:          17.0.9 (Amazon.com Inc. 17.0.9+8-LTS)
OS:           Mac OS X 12.5 aarch64

## SpringBoot
  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::                (v3.2.0)

Thymeleafの式構文を補完する

Thymeleafの式構文(th:textなどth:がつくもの)を補完してくれるのは、xmlns:th="http://www.thymeleaf.org"<html> タグ内に入れれば補完が効くようになります。

thの補完

ThymeleafでPOJO(Plain Old Java Object)を補完する

上記だけだと、Thymeleafの式構文を補完するのみになります。結構便利になりましたが、for-each等でメソッドや変数のアクセスに補完を使いたくなります。@ThymesVarを使用して、Thymeleaf上でサーバ側で設定したPOJOを補完できるようにします。、

シンタックスは下記のようになります。

<!--/* @thymesVar type="${POJOの型}" id="${変数名}" */-->

型は、フルパスで書く必要があります。サンプルでは下記のようにしました。

<!--/* @thymesVar type="java.util.List<jp.co.excite.adventcalendar.ThymeleafDemoController.Info>" id="infoList" */-->

このように書くとIntelliJで補完がされます。

まとめ

最近はフロントエンドの技術選定はReactやVueが多いですが、ちょっとした管理面などには、構築に手間がかからないMPAがまだまだ便利だったりします。Javaを書く時にIntelliJは大変便利なIDEです。それをテンプレートエンジンにも適用できたらもっと便利になります。@thymesVarsを使用して、少しでも書きやすくなればと思います。

最後に

エキサイトではフロントエンジニア、バックエンドエンジニア、アプリエンジニアを随時募集しております。長期インターンも歓迎していますので、興味があれば連絡いただければと思います。

募集職種一覧はこちらになります!(カジュアルからもOK) www.wantedly.com