【问题标题】:Error parsing thymeleaf template with "1 < 0"使用“1 < 0”解析百里香模板时出错
【发布时间】:2022-03-31 09:04:52
【问题描述】:

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

<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 '&lt;' character.

但如果我试试这个:

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

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

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

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

感谢所有愿意阅读的人。

【问题讨论】:

    标签: thymeleaf


    【解决方案1】:

    您必须使用

    转义符号
    &lt; for < 
    &gt; for >
    &le; for <= 
    &ge; for >=
    

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

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

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

    【讨论】:

    • 那么是 XML 解析问题吗?
    • 没错,这是一个解析问题。
    • 我不明白为什么大于符号有效,但我明白为什么有解决方法。感谢您的时间和帮助。
    • 这弄乱了我在 JavaScript 中的 for 循环。
    • 我需要这个:≤ for
    【解决方案2】:
    &le; for <= 
    &ge; for >=
    

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

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

    &amp;le;&amp;ge; 似乎不被接受为格式正确的 XML。

    这解决了“IllegalStateException: Cannot handle (8804) '≤'”的问题。

    【讨论】:

    • 谢谢,任何想法 ≥和≤不工作?我有同样的问题。
    • 因为 在Java 中不是一个有效的运算符,事实上你必须使用&lt;= 来代替。也许 很久以前工作过。如果您从 2013 年开始看到 @brnrd 的答案。
    【解决方案3】:

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

    <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>
    

    有效。

    【讨论】:

    • 你粗暴地将“大于 X”变成了“非 X”,这根本不是一回事,除非你绝对确定检查的值只能产生所需的值范围。此外,对于示例中的特定情况,您应该查看 Smarty 模板引擎中的布尔解析和 thruty 条件。
    猜你喜欢
    • 2013-02-03
    • 2018-03-25
    • 2019-03-17
    • 2015-11-29
    • 1970-01-01
    • 2016-07-02
    • 2021-01-09
    • 2015-06-01
    • 2020-02-05
    相关资源
    最近更新 更多