在 thymeleaf 中包含 JavaScript 变量

2022-09-02 12:22:14

如何在百里香包中包含一个 JavaScript 变量来检查条件?

试:

<div th:if="${myVariable == 5}">
 //some code
</div>

但它不起作用。


答案 1

您尝试执行的操作将不起作用,因为 Thymeleaf 在服务器端处理模板,因此它有权访问的变量是其模型中定义的变量。

如果你在Thymeleaf运行的模型中,它会起作用。如果要在 Thymeleaf 模板中设置 Javascript 变量的值,可以执行以下操作:myVariable

<script th:inline="javascript">
/*<![CDATA[*/
    ...

    var myVariable= /*[[${myVariable}]]*/ 'value';

    ...
/*]]>*/
</script>

在脚本中,您可以拥有所需的任何逻辑,包括隐藏/显示等。

有关模式的详细信息,请查看文档的一部分。


答案 2

在 thymeleaf 3 中,必须删除 CDATA 块才能内联引用我的变量,否则解析器会完全忽略它。此语法在升级后对我成功工作:

<script th:inline="javascript">
     var myVariable = [[${#vars.myVar}]];
     ...
</script>

注意:如果您还将变量引用为 [[${#ctx.variables.myVar}]],它将不再适用于 thymeleaf 3,因为 ctx 不再具有名为变量的变量。