web-dev-qa-db-ja.com

Thymeleaf:属性とプロパティが存在する場合にテキストを表示

プロパティと属性が存在する場合、thymeleafに属性プロパティのコンテンツを表示する簡単な方法はありますか? htmlページに属性「summary」を持つ属性「error」がある場合、それを表示したいと思います。

_<span th:text="${error.summary}">error summary</span>
_

属性「エラー」がない場合、次のエラーが発生します。

org.springframework.expression.spel.SpelEvaluationException: EL1007E:(pos 0): Field or property 'summary' cannot be found on null

現在、私は次のアプローチを使用していますが、これは複雑すぎるようです。

_<span th:if="${error != null and error.summary != null}"><span th:text="${error.summary}">error summary</span></span>
_

それを達成する簡単な方法はありますか?

21
James

もちろん! th:if属性に関連付けられたプロセッサは、th:text属性に関連付けられたプロセッサよりも 高い優先順位 を持っているため、最初に評価されます。したがって、次のように記述できます。

<span th:if="${error != null && error.summary != null}" th:text="${error.summary}">Static summary</span>

以下を使用して短縮することもできます。

<span th:text="${error?.summary}">Static summary</span>

しかし、この場合、概要が存在するかどうかにかかわらず、spanタグが作成されると思いますが、これは少しいです。

条件式の詳細については、 こちら を参照してください。

48
tduchateau