Intellij+SpringBoot2.0+Thymeleafにてコンテンツを自動更新させる

SpringBoot2.0が公開されたのですが、

build.gradleにてプロパティが無いと怒られてしまいました。

 

調べたところ、リソースリローディングさせるには下記の変更が必要でした。

変更前(SpringBoot2.0以前)

bootRun {
    addResources=true
}

変更後(SpringBoot2.0)

bootRun {
    sourceResources sourceSets.main
}

これでbootRunさせれば起動され、Thymeleafのコンテンツも自動更新されます。

Thymeleafにて型チェック(instanceof)を行う

Map<String,Object>なんて事をしていたら、

ObjectがMapだったりListだったりして

EL1008E: Property or field ‘********’ cannot be found on object of type ‘java.util.HashMap’ – maybe not public?

なんてエラーを起こしてしまいました。

 

そこで、処理する前に型チェックを行い、チェックが通った場合のみ処理させます。


<td th:if="*{comps instanceof T(java.util.List)}" th:text="*{comps.li}"></td>

javaと同じ様にinstanceofを使ってあげればチェックすることができます。

否定させる場合は、


<td th:if="*{not(comps instanceof T(java.util.List))}" th:text="*{comps.li}"></td>

ですね。