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

标签 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 输出中写入吗?

最佳答案

实现此目的的一种方法是预处理。像这样的东西适用于您的示例:

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

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

关于java - 使用 Thymeleaf 中的变量一次设置多个标签属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51106349/

相关文章:

java - 在 Java 中将 session 值附加到数组

java - 将 Spring 1.x 升级到 4.x

java - 执行 'view source' 时隐藏字段丢失

javascript - 如何根据需要显示<c:foreach>循环的更多/更少结果?

java - 使用Java读取路径中带有空格的文件

java - 如何编写正则表达式来仅提取前面带有特定字符串的数字?

Java BigDecimal setScale 和 half_even 四舍五入

java - Hibernate ManyToOne FetchType.LAZY 不起作用?

本地主机上的 Spring Boot HTTPS

oracle - 浏览器关闭时防止单用户多登录