我正在将一些 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 输出中写入吗?
最佳答案
实现此目的的一种方法是预处理。像这样的东西适用于您的示例:
<div class="myClass" th:attr="__${myVar}__" />
(这确实依赖于 ${myVar}
是 th:attr 属性的有效字符串,因此您必须小心对待它。)
关于java - 使用 Thymeleaf 中的变量一次设置多个标签属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51106349/