2013-12-17 7 views
31

Ho alcuni valori nel mio database che possono essere nulli se non sono già stati immessi.Uso di Thymeleaf quando il valore è null

Ma quando uso Thymeleaf nel mio html, dà un errore durante l'analisi di valori nulli.

C'è un modo per gestire questo?

risposta

40

Certo che c'è. Ad esempio, è possibile utilizzare lo conditional expressions. Per esempio:

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

Si può anche omettere l'espressione "altro":

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

Si può anche dare un'occhiata al Elvis operator per visualizzare i valori predefiniti.

+0

'Modifica:' Aggiunto il '$ {...}' per la condizione if se l'avete perso. +1 per l'espressione ternaria in 'th: text'. – Lucky

+0

Potresti spiegare perché ci sono più $ {...} necessari? Cosa succede se voglio prefisso entrambe le alternative con ad es. 'Foo:'. Dovrei specificarlo due volte all'interno delle alternative? – lilalinux

+0

La tua risposta dovrebbe essere ammessa come soluzione. Grazie. – russellhoff

2

che hai fatto due volte la verifica quando si crea

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

si dovrebbe fare pulito e semplice, come di seguito.

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

Il modo più breve è utilizzare '?' operatore. Se si dispone di entità User con un'entità Indirizzo incorporato per i campi di accesso di soggetti Indirizzo e stamparle se l'indirizzo non è nullo, altrimenti qui sarà una colonna vuota:

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

questo è il migliore ans –

+0

L'operatore '? .' è chiamato operatore di" navigazione sicura ", per i [documenti di linguaggio di espressione di primavera] (https://docs.spring.io/spring/docs/4.2.x/spring -Framework-reference/html/expressions.html # espressioni-operatore-safe-navigazione). – rdguam

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

È possibile utilizzare 'th: se 'insieme a' th: text '

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