【问题标题】:Thymeleaf switch on integer, case greater thanThymeleaf 开启整数,大小写大于
【发布时间】:2023-03-21 04:30:02
【问题描述】:

这可能是一个简单的问题,但我似乎想不出答案。

我有这个简单的 Thymeleaf 代码:

<ul data-th-switch="${someVar}">
    <li data-th-case="${gt 6}">someVar is greater than 6.</li>
    <li data-th-case="*">Default case.</li>
</ul>

我收到关于 data-th-case="${gt 6}" 的错误。有没有办法在 Thymeleaf 中做到这一点?

提前致谢。

【问题讨论】:

    标签: html switch-statement thymeleaf


    【解决方案1】:

    语法确实是错误的。 Details.

    一个正确的语法是"${someVar} gt 6",当然,它不能正常工作,尽管模板会呈现。这是因为 ${someVar} 的计算结果为 12(例如),而 ${someVar} gt 6 的计算结果为 true。这些不相等。

    如果启用 ThyemeLeaf 跟踪,您将看到 thymeleaf 将如何解释:

    o.t.s.expression.GreaterThanExpression   : Evaluating GREATER THAN expression: "${someVar} > 6". Left is "12", right is "6". Result is "true"
    o.t.s.expression.EqualsExpression        : Evaluating EQUALS expression: "${someVar} == (${someVar} > 6)". Left is "12", right is "true". Result is "false"
    

    根据您要实现的逻辑,您可能会得出非常不同的解决方案 - 例如从将小工具放入模型到实现 if-else 逻辑。检查这个问题以了解更多ideas

    【讨论】:

    • 感谢您的意见,@Lachezar Balev。为了解决这个问题,我确实最终实现了一些 if-else 块。我实际上是在将一个 JSP 文件迁移到 Thymeleaf 并且卡在 标记上。惊讶的 Thymeleaf 没有类似的功能。无论如何,你是绝对正确的——我将其标记为答案。
    猜你喜欢
    • 2016-06-09
    • 1970-01-01
    • 2011-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-13
    相关资源
    最近更新 更多