2013-12-17 11 views
31

Mam niektóre wartości w mojej bazie danych, które mogą mieć wartość null, jeśli nie zostały jeszcze wprowadzone.Używanie Thymeleaf, gdy wartość jest pusta

Ale kiedy używam Thymeleaf w moim html, to daje błąd podczas analizowania wartości null.

Czy istnieje sposób, aby sobie z tym poradzić?

Odpowiedz

40

Pewnie, że jest. Możesz na przykład użyć conditional expressions. Na przykład:

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

Można nawet pominąć „innego” wyrażenie:

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

Można również spojrzeć na Elvis operator do wyświetlania wartości domyślnych.

+0

'Edytuj:' Dodano '$ {...}' dla warunku jeśli tak, jak go przegapiłeś. +1 dla wyrażenia trójskładnikowego w 'th: text'. – Lucky

+0

Czy mógłbyś wyjaśnić, dlaczego potrzebne jest wiele $ {...}? Co się stanie, jeśli chcę przedrostem obu alternatyw dla np. 'Bla: '. Czy będę musiał podać to dwa razy w alternatywach? – lilalinux

+0

Twoja odpowiedź powinna być przyjęta jako rozwiązanie. Dziękuję Ci. – russellhoff

2

Robiłeś dwukrotnie sprawdzanie podczas tworzenia

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

Należy zrobić to czyste i proste, jak poniżej.

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

Najkrótsza droga używa "?" operator. Jeśli masz jednostkę użytkownik z wbudowanego podmiotu Adres aby polach dostępu jednostki adresowej i wydrukować je, jeśli adres nie jest null, w przeciwnym razie będzie tu pusta kolumna:

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

to jest najlepszy ans –

+0

Operator '? .' jest nazywany operatorem" bezpiecznej nawigacji ", zgodnie z [językiem Spring Expression Language Docs] (https://docs.spring.io/spring/docs/4.2.x/spring -framework-reference/html/expressions.html # expressions-operator-safe-navigation). – rdguam

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

Można użyć „th: jeśli "razem z" t: text '

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