17

也许是一个愚蠢的问题,但我未能从谷歌检索信息。正如标题所说,如果尝试解析这个简单的行,我会得到一个堆栈跟踪:

<span th:if="${1 < 0}">

错误是:

org.xml.sax.SAXParseException; lineNumber: 14; columnNumber: 43; The value of attribute "th:if" associated with an element type "null" must not contain the '<' character.

但如果我试试这个:

<span th:if="${0 > 1}">

一切都很好,我的问题是:为什么会出现这个错误?

我认为这与我缺乏使用 Java 和 thymeleaf 的经验有关,但我不明白为什么只是通过改变它按预期工作的元素的位置(总是返回 false)。

这是表达式解析中的错误(因为某些解析器规则禁止检查 1 是否低于 0)或者只是一个奇怪的 XML 解析问题?

感谢所有愿意阅读的人。

4

3 回答 3

45

您必须使用转义符号

&lt; for < 
&gt; for >
&le; for <= 
&ge; for >=

所以你的代码应该是这样的:

<span th:if="${1 &lt; 0}">

您可以在他们网站上的“使用 Thymeleaf”教程的比较器和平等部分中找到有关此内容的完整文档。

于 2013-05-04T10:23:03.053 回答
15
&le; for <= 
&ge; for >=

对我不起作用,我不得不使用:

&lt;= for <= 
&gt;= for >=

似乎 ≤ 和 ≥ 不被接受为格式良好的 XML。

这个解决方案是:-

“IllegalStateException:无法处理(8804)'≤'”

于 2016-09-10T17:21:24.207 回答
-1

我遇到了同样的问题,但显示了不同的异常,我的代码在这里:

<div class="text-center m-1" th:if="${totalCount} > 0">

    <span> Showing user # [[${startCount}]] to [[${endCount}]] of [[${totalCount}]] </span>

</div>

这是我的堆栈跟踪:

Caused by: org.attoparser.ParseException: Cannot execute GREATER THAN comparison: operands are "null" and "0"

所以,我改为:

 <div class="text-center m-1" th:if="${totalCount} != 0">

        <span> Showing user # [[${startCount}]] to [[${endCount}]] of [[${totalCount}]] </span>

    </div>

有用。

于 2021-11-13T03:44:16.700 回答