【问题标题】:ThymeLeaf: Not Equal expression in th:ifThymeLeaf:th:if 中的不等于表达式
【发布时间】:2018-07-03 11:01:34
【问题描述】:

对 ThymeLeaf 非常陌生,但在我正在进行的项目中遇到了问题。在日志中得到以下错误:

Exception evaluating SpringEL expression: "!searchResults.results.empty"

看看有问题的代码是:

<th:block th:if="${!searchResults.results.empty}">

我认为感叹号 (!) 的位置不正确。我试过了:

<th:block th:if="${not searchResults.results.empty}">

但同样的错误评估。有人可以帮助我如何否定支票吗?

【问题讨论】:

  • 你可以使用th:unless
  • 另一个选项是“searchResults.results.empty == false”和@Alexander 的 th:unless。但我认为发生错误是因为无法评估“searchResults.results.empty”。属性是否为空,getter isEmpty() 或 getEmpty() 是否存在?
  • 是的@Flocke,就是这样。进一步进入日志Property or field 'empty' cannot be found on null。 Sumit 的空检查修复了它!

标签: javascript thymeleaf


【解决方案1】:

假设从您粘贴的代码中,您想要实现一个检查,Thymeleaf 检查对象中的空值。为此:---

<div th:if= "${searchResults.results != null}">

 <div th:if= "${searchResults.results != ''}">

另外, 或者,您可以做的是-检查您的控制器本身,该对象是否为空或没有任何值,并在您的 html 页面上发送响应,然后根据 Thymeleaf 上的响应进行检查,如下所示:- - -

1.) 你的控制器:--

    List ls = //some data from you DAO
    if(ls.isEmpty()){
         model.addAttribute("response", "NoData");
    }else{
         model.addAttribute("response", ls);
    }

然后在你的 Thymeleaf 上:- - -

<th:block th:if="${response=='NoData'}"> No Data Found </th:block>

【讨论】: