【问题标题】:Thymeleaf - throw exception is template variable not found in ContextThymeleaf - 抛出异常是在上下文中找不到的模板变量
【发布时间】:2022-10-18 06:05:04
【问题描述】:

如果在上下文中找不到模板中使用的变量,我希望 Thymeleaf 抛出异常。如果在上下文中找不到绑定变量,Thymeleaf 似乎默认会在 HTML 标记中注入空文本。这似乎很危险,因为它基本上默默地​​隐藏了错误。

<div data-th-text="${amount}">Blah</div>

代码:

Context context = new Context();
// never set "amount" variable

输出:

<div></div>

我假设会有一个“严格”模式,如果在上下文中找不到变量,它会抛出带有变量名和附加上下文的异常。我一直在搜索 stackoverflow 和 API 文档,但找不到这样的东西。我想覆盖 Context getVariable 以便它执行 containsVariable 检查,但我不确定这是否会影响性能。此外,我无法捕获有关模板中失败位置的任何元数据。我错过了一些明显的东西吗?

我将 Thymeleaf 用作独立引擎——而不是 web/spring 应用程序的一部分。

【问题讨论】:

  • 你找到解决方案了吗? @nogridbag
  • 不幸的是,没有。使用 Thymeleaf 的项目被搁置,所以我没有花任何精力寻找替代品。

标签: java thymeleaf


【解决方案1】:

您可以利用th:assert 来做到这一点。如果不满足此断言,则 thymeleaf 将在文档处理期间抛出异常并打印相关错误以了解失败的原因。

所以你的代码将是

<div th:assert="${amount} != null" data-th-text="${amount}">Blah</div>

如果从未设置上下文变量amount,它将为空,因此断言将失败,这将产生异常。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-07-19
    • 1970-01-01
    • 2023-04-06
    • 1970-01-01
    • 1970-01-01
    • 2020-08-27
    • 2013-10-14
    • 2016-05-14
    相关资源
    最近更新 更多