Thymeleaf: показывать текст, если атрибут и свойство существуют
Есть ли простой способ в тимелеафе показать содержимое свойства атрибута, если свойство и атрибут существуют? Если в моей html-странице есть атрибут "error" с свойством "summary", я бы хотел его показать:
<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>
Есть ли более простой способ достичь этого?
Ответы
Ответ 1
Конечно! Так как процессор, связанный с атрибутом 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 будет создан, что немного уродливо.
Подробнее об условных выражениях здесь.