我的数据库中有一些值,如果尚未输入,这些值可能为空。
但是当我在 html 中使用 Thymeleaf 时,它在解析空值时会出错。
有什么办法可以解决这个问题吗?
最短的方法是使用“?”操作员。如果您有嵌入地址实体的用户实体,以便访问地址实体的字段并在地址不为空时打印它们,否则这里将是一个空列:
<td th:text="${user?.address?.city}"></td>
注意:此功能来自
SpringStandardDialect
,而不是 Thymeleaf 标准方言。
// call it if using thymeleaf without spring mvc
templateEngine.setDialect(new SpringStandardDialect())
当然有。例如,您可以使用条件表达式。例如:
<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>
这也可以使用 elvis 运算符
?:
来处理,当字段为空时,它将添加默认值:
<span th:text="${object.property} ?: 'default value'"></span>
您可以将“th:if”与“th:text”一起使用
<span th:if="${someObject.someProperty != null}" th:text="${someObject.someProperty}">someValue</span>
还值得查看 #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>
你可以使用这个解决方案,它对我有用
<span th:text="${#objects.nullSafe(doctor?.cabinet?.name,'')}"></span>
我用
<div th:text ="${variable != null} ? (${variable != ''} ? ${variable} : 'empty string message') : 'null message' "></div>
最短路线!它对我有用, 其中 NA 是我的默认值。
<td th:text="${ins.eValue!=null}? ${ins.eValue}:'NA'" />
最干净的解决方案是仅在设置时才显示它。 Thymeleaf 在这里是 javascripty 的:
<span th:unless="${someObject.someProperty}" th:text="${someObject.someProperty}">someValue</span>