当值为null时使用Thymeleaf

问题描述 投票:0回答:11

我的数据库中有一些值,如果尚未输入,这些值可能为空。

但是当我在 html 中使用 Thymeleaf 时,它在解析空值时会出错。

有什么办法可以解决这个问题吗?

html null thymeleaf
11个回答
180
投票

最短的方法是使用“?”操作员。如果您有嵌入地址实体的用户实体,以便访问地址实体的字段并在地址不为空时打印它们,否则这里将是一个空列:

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

注意:此功能来自

SpringStandardDialect
,而不是 Thymeleaf 标准方言。

// call it if using thymeleaf without spring mvc
templateEngine.setDialect(new SpringStandardDialect())

89
投票

当然有。例如,您可以使用条件表达式。例如:

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

您甚至可以省略“else”表达式:

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

您还可以查看 Elvis 操作符来显示默认值,如下所示:-

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

Elvis 运算符可以与 Noop 令牌结合使用模板值。当值不存在时,它的作用就像根本没有设置

th:text
属性。

<span th:text="${someObject.someProperty} ?: _">default value</span>

38
投票

这也可以使用 elvis 运算符

?:
来处理,当字段为空时,它将添加默认值:

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

23
投票

您可以将“th:if”与“th:text”一起使用

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

9
投票

还值得查看 #objects 内置帮助程序的文档: https://www.thymeleaf.org/doc/tutorials/2.1/usingthymeleaf.html#objects

有用:

${#objects.nullSafe(obj, default)}


8
投票

创建时您已进行了两次检查

${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>

4
投票

你可以使用这个解决方案,它对我有用

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

3
投票

我用

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

0
投票

最短路线!它对我有用, 其中 NA 是我的默认值。

<td th:text="${ins.eValue!=null}? ${ins.eValue}:'NA'" />

0
投票

最干净的解决方案是仅在设置时才显示它。 Thymeleaf 在这里是 javascripty 的:

<span th:unless="${someObject.someProperty}" th:text="${someObject.someProperty}">someValue</span>
© www.soinside.com 2019 - 2024. All rights reserved.