내 데이터베이스에 아직 입력하지 않은 경우 null이 될 수있는 값이 있습니다.
그러나 HTML에서 Thymeleaf를 사용하면 null 값을 구문 분석 할 때 오류가 발생합니다.
이것을 처리 할 방법이 있습니까?
답변:
가장 짧은 방법은 '?'를 사용하는 것입니다. 운영자. 주소 엔터티의 필드에 액세스하고 주소가 null이 아닌 경우 인쇄하기 위해 포함 된 주소 엔터티가있는 사용자 엔터티가있는 경우, 그렇지 않으면 여기에 빈 열이 있습니다.
<td th:text="${user?.address?.city}"></td>
물론입니다. 예를 들어 조건식을 사용할 수 있습니다 . 예를 들면 :
<span th:text="${someObject.someProperty != null} ? ${someObject.someProperty} : 'null value!'">someValue</span>
"else"표현식을 생략 할 수도 있습니다.
<span th:text="${someObject.someProperty != null} ? ${someObject.someProperty}">someValue</span>
Elvis 연산자 를 살펴보고 기본값을 표시 할 수도 있습니다 .
Edit:
${...}
놓친 if 조건에 대한을 추가 했습니다. 에서 삼항 표현식의 경우 +1 th:text
.
필드가 null 일 때 기본값을 추가하는 elvis 연산자 ?:
를 사용하여 처리 할 수도 있습니다 .
<span th:text="${object.property} ?: 'default value'"></span>
#objects 빌트인 도우미에 대한 문서도 살펴볼 가치가 있습니다. https://www.thymeleaf.org/doc/tutorials/2.1/usingthymeleaf.html#objects
유용합니다 : ${#objects.nullSafe(obj, default)}
<p data-th-text ="${#strings.defaultString(yourNullable,'defaultValueIfYourValueIsNull')}"></p>
이 솔루션을 사용할 수 있습니다.
<span th:text="${#objects.nullSafe(doctor?.cabinet?.name,'')}"></span>
?.
연산자는 Spring Expression Language 문서에 따라 "안전한 탐색"연산자라고합니다 .