【发布时间】:2014-01-05 08:25:33
【问题描述】:
我的数据库中有一些值如果尚未输入,则可能为空。
但是当我在我的 html 中使用 Thymeleaf 时,它在解析空值时会出错。
有什么办法可以解决吗?
【问题讨论】:
我的数据库中有一些值如果尚未输入,则可能为空。
但是当我在我的 html 中使用 Thymeleaf 时,它在解析空值时会出错。
有什么办法可以解决吗?
【问题讨论】:
最短的方法是使用 '?'操作员。如果您有带有嵌入地址实体的用户实体,以便访问地址实体的字段并在地址不为空时打印它们,否则这里将是一个空列:
<td th:text="${user?.address?.city}"></td>
【讨论】:
?. 运算符被称为“安全导航”运算符,根据 Spring Expression Language docs。
当然有。例如,您可以使用conditional expressions。例如:
<span th:text="${someObject.someProperty != null} ? ${someObject.someProperty} : 'null value!'">someValue</span>
您甚至可以省略“else”表达式:
<span th:text="${someObject.someProperty != null} ? ${someObject.someProperty}">someValue</span>
您还可以查看Elvis operator 以显示如下默认值:-
<span th:text="${someObject.someProperty} ?: 'default value'">someValue</span>
【讨论】:
Edit: 为 if 条件添加了 ${...},因为您错过了它。为 th:text 中的三元表达式 +1。
这也可以使用elvis operator ?: 来处理,当字段为空时会添加一个默认值:
<span th:text="${object.property} ?: 'default value'"></span>
【讨论】:
您可以将 'th:if' 与 'th:text' 一起使用
<span th:if="${someObject.someProperty != null}" th:text="${someObject.someProperty}">someValue</span>
【讨论】:
!= null,只要<span th:if="${someObject.someProperty}" ...就够了
还值得查看#objects 内置帮助程序的文档: https://www.thymeleaf.org/doc/tutorials/2.1/usingthymeleaf.html#objects
还有有用的:${#objects.nullSafe(obj, default)}
【讨论】:
你在创建时做了两次检查
${someObject.someProperty != null} ? ${someObject.someProperty}
你应该像下面这样干净和简单。
<td th:text="${someObject.someProperty} ? ${someObject.someProperty} : 'null value!'"></td>
【讨论】:
<p data-th-text ="${#strings.defaultString(yourNullable,'defaultValueIfYourValueIsNull')}"></p>
【讨论】:
我用
<div th:text ="${variable != null} ? (${variable != ''} ? ${variable} : 'empty string message') : 'null message' "></div>
【讨论】:
你可以使用这个对我有用的解决方案
<span th:text="${#objects.nullSafe(doctor?.cabinet?.name,'')}"></span>
【讨论】:
最短路径!它对我有用, 其中 NA 是我的默认值。
<td th:text="${ins.eValue!=null}? ${ins.eValue}:'NA'" />
【讨论】: