我正在将一些JSP文件迁移到Thymeleaf,并且发现了以下问题。在原始的JSP代码中,许多其他JSP文件中都包含一个文件,该文件的行如下所示:
<c:set var="myVar" value="data-x=50 data-y=37" />
在包含该文件的文件中,变量myVar
的用法如下:
<div class="myClass" ${myVar}>
设置多个属性,这些属性可以一次在所有地方使用。这里的要点是,您在一个文件中设置了myVar
,其值在所有其他文件中都被使用。如果需要更改属性的值,则只需更改一个文件。
尝试在Thymeleaf中复制它,我尝试通过以下方式使用th:attr
属性。首先,我在模型中设置一个变量,如下所示:
model.addAttribute("myVar", "data-x=50, data-y=37");
然后在Thymeleaf中做:
<div class="myClass" th:attr="${myVar}" >
但是它不起作用,它会抛出
TemplateProcessingException: Could not parse as assignation sequence: "${myVar}"
我也曾考虑过使用Javascript通过JQuery动态添加属性,但是我宁愿以其他方式来做到这一点,因为我没有构建该应用程序,因此它具有很多脚本,并且我担心这样做通过Javascript可能会有副作用。
有什么方法可以使用Thymeleaf直接在HTML输出中编写?
答案 0 :(得分:1)
一种可以通过预处理完成此任务的方法。这样的事情适用于您的示例:
<div class="myClass" th:attr="__${myVar}__" />
(这确实依赖${myVar}
是th:attr属性的有效字符串,因此您必须小心使用它。)