web-dev-qa-db-fra.com

Utilisation de Thymeleaf lorsque la valeur est null

J'ai des valeurs dans ma base de données qui peuvent être nulles si elles n'ont pas déjà été entrées.

Mais lorsque j'utilise Thymeleaf dans mon HTML, cela donne une erreur lors de l'analyse des valeurs nulles.

Y at-il un moyen de gérer cela?

50
serkan

Le plus court chemin utilise '?' opérateur. Si vous avez une entité utilisateur avec une adresse incorporée afin d'accéder aux champs de l'entité d'adresse et de les imprimer si l'adresse n'est pas nulle, sinon il y aura une colonne vide:

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

Bien sûr il y a. Vous pouvez par exemple utiliser les expressions conditionnelles . Par exemple:

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

Vous pouvez même omettre l'expression "else":

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

Vous pouvez également consulter l'opérateur Elvis pour afficher les valeurs par défaut.

50
tduchateau

Vous pouvez utiliser 'the: if' avec 'the: text'

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

Ceci peut également être géré en utilisant l'opérateur elvis?: qui ajoutera une valeur par défaut lorsque le champ est null:

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

Vous avez fait deux fois la vérification lorsque vous créez 

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

Vous devriez le faire propre et simple comme ci-dessous. 

<td th:text="${someObject.someProperty} ? ${someObject.someProperty} : 'null value!'"></td>
5
Ah Hiang
   <p data-th-text ="${#strings.defaultString(yourNullable,'defaultValueIfYourValueIsNull')}"></p>
5
Vazgen Torosyan

Il convient également de consulter la documentation de l’assistant intégré #objects: https://www.thymeleaf.org/doc/tutorials/2.1/usingthymeleaf.html#objects

Il est utile: ${#objects.nullSafe(obj, default)}

1
Alex Tsumarau

J'utilise 

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