<!-- NO -->
<div th:replace="~{fragments :: someSection(info=${info})}"
th:unless="${info == null}"></div>
<!-- YES -->
<th:block th:unless="{info == null}">
<div th:replace="~{fragments :: someSection(info=${info})}"></div>
</th:block>
분명 fragments replace 조건에 not null을 넣어 놨는데, 파라미터가 null인 경우에도 fragement가 evaluate 되면서 SpEL error가 발생했다.
왜 그런가 좀 찾아보니 fragment replace 하는 부분(inclusion)의 우선순위가 Condition evaluation보다 높아서 먼저 되기 때문. (Attribute Precedence 참고)
따라서 별도 th:block으로 분리하면 해결된다.
<table th:replace="${info} ? ~{fragments :: someSection(info=${info})} : _">
thymeleaf 3.0 이상 사용한다면 no-operation token을 사용하는 방식으로 더 간단히 사용할 수 있다.
참고자료
반응형
'프로그래밍 > Java' 카테고리의 다른 글
gradle --warning-mode all 추가 방법 (0) | 2024.09.18 |
---|---|
Caffine cache RemovalListener 작동하지 않을 때 (0) | 2024.01.28 |
[Java] 객체 비교 (0) | 2022.07.22 |
snappy-java M1 mac 관련 이슈 해결방법 (0) | 2022.07.11 |
[Jitpack] 소개 및 사용법 (배포, 의존성 추가) (0) | 2022.06.01 |