值为空时使用Thymeleaf


78

我的数据库中有一些值,如果尚未输入,则可以为null。

但是,当我在HTML中使用Thymeleaf时,解析空值时会出现错误。

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

Answers:


130

最短的方法是使用“?” 操作员。如果您具有带有嵌入式地址实体的用户实体,以便访问地址实体的字段并在地址不为null的情况下进行打印,则此处将为空列:

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

7
根据Spring Expression Language docs?.,该运算符称为“安全导航”运算符。
rdguam '18

虽然上面的语法在thymeleaf 3.0.9附带的spring boot 2.0.5中被认为是有效的,但至少对我而言,它不执行此处要求的操作。这是您必须启用的一项特殊功能吗?
keyboardsamurai

此功能不是来自百里香叶,而是来自春天
deFreitas

2
使用?在数字字段为0时也会产生false。因此,您需要在数字字段上使用完整的!= null条件。
戴夫

这是最好的答案,因为它更加简洁
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 '16

您的答案应被视为解决方案。谢谢。
russellhoff


16

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

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

5
不需要!= null<span th:if="${someObject.someProperty}" ...满足
DeFreitas

7

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

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

您应该按照以下步骤进行清洁和简单操作。

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



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'" />
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.