使用Thymeleaf中的变量一次设置多个标签属性

时间:2018-06-29 16:53:46

标签: java spring jsp thymeleaf

我正在将一些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输出中编写?

1 个答案:

答案 0 :(得分:1)

一种可以通过预处理完成此任务的方法。这样的事情适用于您的示例:

<div class="myClass" th:attr="__${myVar}__" />

(这确实依赖${myVar}是th:attr属性的有效字符串,因此您必须小心使用它。)