首页 > 解决方案 > org.thymeleaf.exceptions.TemplateProcessingException:在此上下文中只允许返回数字或布尔值的变量表达式

问题描述

我一直在使用thymeleaf th:onclick属性来调用javascript函数,参数如下

th:onclick="|myFunction('${parameter1}')|"

但与thymeleaf 3.1.10 此已被删除。他们建议使用th:data属性。

但是,我找到了以下解决方法,并且它们都运行良好。

  1. th:attr="onclick=|myFunction('${parameter1}')|"
  2. th:onclick="@{myFunction('${parameter1}')}">

现在我不确定这些变通办法是否是正确的做事方式,如果是,哪一种是更好的方式。

标签: spring-bootthymeleaf

解决方案


第一个将按照您的意愿工作 - 但是,您绕过了安全限制,现在您的页面容易受到 javascript 注入的影响(这是进行此更改的最初原因)。

第二个只是简单地不起作用。它不会扩展变量${parameter1},而是将其编码为这样的 url:

onclick="myFunction?$%7Bparameter1%7D"

您真的应该按照页面上所示的方式进行操作。

th:data-parameter1="${parameter1}" onclick="myFunction(this.getAttribute('data-parameter1'));"

推荐阅读