読者です 読者をやめる 読者になる 読者になる

かんがるーさんの日記

最近自分が興味をもったものを調べた時の手順等を書いています。今は Spring Boot をいじっています。

Spring Boot 1.3.x の Web アプリを 1.4.x へバージョンアップする ( その27 )( Thymeleaf parser-level comment blocks で @thymesVar のコメント文が HTML に出力されないようにする )

概要

記事一覧はこちらです。

Spring Boot 1.3.x の Web アプリを 1.4.x へバージョンアップする ( その26 )( jar ファイルを作成して動作確認する2 ) の続きです。

  • 今回の手順で確認できるのは以下の内容です。
    • Thymeleaf 3 で何が変わったのか確認したくて Tutorial: Using Thymeleaf を読んだのですが、Thymeleaf parser-level comment blocks というものがあることに今さら気づきました(Thymeleaf 3 の新機能ではありません)。
    • @thymesVar のコメント文を HTML に出力しないようにするために使えそうなので試してみます。

参照したサイト・書籍

  1. Tutorial: Using Thymeleaf - 11.2. Thymeleaf parser-level comment blocks
    http://www.thymeleaf.org/doc/tutorials/3.0/usingthymeleaf.html#thymeleaf-parser-level-comment-blocks

目次

  1. @thymesVar のコメント文を HTML に出力しないようにする
  2. Alt+Enter で @thymesVar のコメント文を自動補完できました。。。

手順

@thymesVar のコメント文を HTML に出力しないようにする

IntelliJ IDEA Ulitimate Editon では <!-- @thymesVar id="beanValidationGroupForm" type="ksbysample.webapp.lending.web.springmvcmemo.BeanValidationGroupForm" --> のようなコメント文を書いておくと、Thymeleaf テンプレート内で変数の補完が効くようになります。

コメント文を書いていないと、以下の画像の赤枠の部分で Ctrl+Enter を押しても何も表示されませんが、

f:id:ksby:20170513063646p:plain

<!-- @thymesVar id="beanValidationGroupForm" type="ksbysample.webapp.lending.web.springmvcmemo.BeanValidationGroupForm" -->のコメントを付けると、Ctrl+Enter を押すと候補が表示されます。

f:id:ksby:20170513064014p:plain

ただし HTML を出力した時にこのコメントがそのまま残ります。

f:id:ksby:20170513072219p:plain

HTML を見た時に Thymeleaf が使われていることが分からないようにしたくて、出力されない方法をずっと探していたんですよね。。。

そこで見つけたのが Thymeleaf parser-level comment blocks です。Thymeleaf テンプレート内で記述するコメントの書き方を HTML のコメント文 <!-- ... --> ではなく <!--/* ... */--> にすれば、補完も効くし、HTML には出力されないようになります。

<!--/* @thymesVar id="beanValidationGroupForm" type="ksbysample.webapp.lending.web.springmvcmemo.BeanValidationGroupForm" */--> に変えても候補は表示されます。

f:id:ksby:20170513065545p:plain

そしてコメントは HTML には出力されません。

f:id:ksby:20170513072424p:plain

以下のファイル内の <!-- @thymesVar ... --><!--/* @thymesVar ... */--> に修正します。

  • src/main/resources/templates/sessionsample/confirm.html
  • src/main/resources/templates/sessionsample/first.html
  • src/main/resources/templates/sessionsample/next.html
  • src/main/resources/templates/springmvcmemo/beanValidationGroup.html
  • src/main/resources/templates/textareamemo/display.html
  • src/main/resources/templates/textareamemo/index.html

Alt+Enter で @thymesVar のコメント文は自動補完できました。。。

IntelliJ IDEA Ulitimate Editon では Thymeleaf テンプレート上で Alt+Enter を押すことで <!--/*@thymesVar ... */--> のコメント文を自動補完できることに気づきました。

まず <!--/*@thymesVar ... */--> のコメント文がない変数には赤波下線が表示されます。

f:id:ksby:20170513134103p:plain

赤波下線が表示されている変数にカーソルを移動した後、Alt+Enter を押してコンテキストメニューを表示した後「Declare external variable in comment annotation」を選択します。

f:id:ksby:20170513134959p:plain

<!--/*@thymesVar ... */--> のコメント文が補完されます。type="" の中は空でクラスの補完メニューが出ますので、入力します。

f:id:ksby:20170513135338p:plain

履歴

2017/05/13
初版発行。
2017/05/13
* <!--/*@thymesVar ... */--> のコメント文の自動補完について追記しました。