값이 null 일 때 Thymeleaf 사용


80

내 데이터베이스에 아직 입력하지 않은 경우 null이 될 수있는 값이 있습니다.

그러나 HTML에서 Thymeleaf를 사용하면 null 값을 구문 분석 할 때 오류가 발생합니다.

이것을 처리 할 방법이 있습니까?

답변:


131

가장 짧은 방법은 '?'를 사용하는 것입니다. 운영자. 주소 엔터티의 필드에 액세스하고 주소가 null이 아닌 경우 인쇄하기 위해 포함 된 주소 엔터티가있는 사용자 엔터티가있는 경우, 그렇지 않으면 여기에 빈 열이 있습니다.

<td th:text="${user?.address?.city}"></td>

7
?.연산자는 Spring Expression Language 문서에 따라 "안전한 탐색"연산자라고합니다 .
rdguam

위의 구문은 thymeleaf 3.0.9와 함께 제공되는 스프링 부트 2.0.5에서 유효한 것으로 허용되지만 적어도 여기에서 주장하는 것을 수행하지 않습니다. 활성화해야하는 특수 기능입니까?
keyboardsamurai

이 기능은 thymeleaf에서 가져온 것이 아니라 봄에서 가져온 것입니다
deFreitas

2
사용? 0 인 숫자 필드에서도 false를 생성합니다. 따라서 숫자 필드에 완전한! = null 조건을 사용해야합니다.
Dave

이보다 간결 이것은 최고의 답변입니다
peterchaula가

62

물론입니다. 예를 들어 조건식을 사용할 수 있습니다 . 예를 들면 :

<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.
럭키

$ {...}가 여러 개 필요한 이유를 설명해 주시겠습니까? 예를 들어 'Foo :'와 같이 두 대안을 접두사로 지정하려면 어떻게해야합니까? 대안 안에 두 번 지정해야합니까?
lilalinux

귀하의 답변은 해결책으로 인정되어야합니다. 감사합니다.
russellhoff

19

필드가 null 일 때 기본값을 추가하는 elvis 연산자 ?: 를 사용하여 처리 할 수도 있습니다 .

<span th:text="${object.property} ?: 'default value'"></span>

1
이것은 아마도 thymeleaf에서 기본값을 보여주는 가장 우아한 방법 일 것입니다. 더 많은 업 보트를받을 자격이 있습니다!
membersound

17

'th : if'와 'th : text'를 함께 사용할 수 있습니다.

<span th:if="${someObject.someProperty != null}" th:text="${someObject.someProperty}">someValue</span>

6
에 대한 필요 != null만은 <span th:if="${someObject.someProperty}" ...충분하지 않습니다
deFreitas

7

당신이 만들 때 두 번 확인했습니다

${someObject.someProperty != null} ? ${someObject.someProperty}

아래와 같이 깔끔하고 간단하게해야합니다.

<td th:text="${someObject.someProperty} ? ${someObject.someProperty} : 'null value!'"></td>


5
   <p data-th-text ="${#strings.defaultString(yourNullable,'defaultValueIfYourValueIsNull')}"></p>

2

이 솔루션을 사용할 수 있습니다.

<span th:text="${#objects.nullSafe(doctor?.cabinet?.name,'')}"></span>

1

나는 사용한다

<div th:text ="${variable != null} ? (${variable != ''} ? ${variable} : 'empty string message') : 'null message' "></div>

0

최단 방법! 그것은 나를 위해 일하고 있습니다. 여기서 NA는 내 기본값입니다.

<td th:text="${ins.eValue!=null}? ${ins.eValue}:'NA'" />
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.