thymeleaf 中[[${@}]] 传递js 变量
时间: 2023-09-28 10:09:51 浏览: 273
在 Thymeleaf 中,我们可以使用 `th:attr` 属性来设置 HTML 元素的属性,并使用 `th:text` 属性来设置元素的文本内容。
如果要在 HTML 中使用 JavaScript 变量,可以将其传递给 HTML 元素的属性,然后在 JavaScript 中获取该属性的值。例如,假设我们有一个 JavaScript 变量 `var myVar = "Hello Thymeleaf!";`,我们想将其传递给一个 `div` 元素的 `data-my-var` 属性,可以在 Thymeleaf 中这样写:
```html
<div th:attr="data-my-var=${myVar}">...</div>
```
然后在 JavaScript 中可以使用 `getAttribute` 方法获取该属性的值:
```javascript
var myVar = document.querySelector('div[data-my-var]').getAttribute('data-my-var');
console.log(myVar); // 输出:Hello Thymeleaf!
```
注意,Thymeleaf 中使用的变量需要使用 `${}` 包裹,而不是使用 `[[${}]]`。
相关问题
将js中的变量传递给thymeleaf
要将JS中的变量传递给Thymeleaf,需要使用AJAX或表单提交。以下是两种方法:
1. AJAX方式
使用AJAX可以异步地将数据发送到服务器,然后从服务器响应中获取结果。在JS中,可以使用XMLHttpRequest对象来实现AJAX请求。例如:
```javascript
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function() {
if (xhr.readyState === 4) {
if (xhr.status === 200) {
// 获取服务器响应
var data = xhr.responseText;
// 将数据传递给Thymeleaf
document.getElementById("data").innerHTML = data;
} else {
console.error(xhr.statusText);
}
}
};
xhr.open("POST", "/your/url", true);
xhr.setRequestHeader("Content-Type", "application/json");
xhr.send(JSON.stringify({ "variable": yourVariable }));
```
在Thymeleaf模板中,可以使用Thymeleaf的表达式语言(EL)来获取传递的参数。例如:
```html
<div th:text="${variable}" id="data"></div>
```
2. 表单提交方式
使用表单提交可以将数据同步地发送到服务器,然后重新加载页面以显示结果。在JS中,可以通过创建一个表单元素并将其添加到DOM中来实现表单提交。例如:
```javascript
var form = document.createElement("form");
form.setAttribute("method", "post");
form.setAttribute("action", "/your/url");
var input = document.createElement("input");
input.setAttribute("type", "hidden");
input.setAttribute("name", "variable");
input.setAttribute("value", yourVariable);
form.appendChild(input);
document.body.appendChild(form);
form.submit();
```
在Thymeleaf模板中,可以使用Thymeleaf的表达式语言(EL)来获取表单提交的参数。例如:
```html
<div th:text="${param.variable}" id="data"></div>
```
将js中定义的变量传递给thymeleaf
要将JavaScript中定义的变量传递给Thymeleaf,你可以使用AJAX来实现。具体步骤如下:
1. 在JavaScript中定义一个变量,并将其发送到后端,可以使用jQuery的`$.ajax()`方法:
```
var myVar = "Hello World";
$.ajax({
url: "/myController/myMapping",
type: "POST",
data: {myVar: myVar},
success: function(response) {
console.log(response);
}
});
```
2. 在后端的Controller中,通过`@RequestParam`注解接收该变量:
```
@Controller
public class MyController {
@PostMapping("/myMapping")
public String myMapping(@RequestParam("myVar") String myVar, Model model) {
model.addAttribute("myVar", myVar);
return "myTemplate";
}
}
```
3. 在Thymeleaf模板中,通过`${}`表达式来获取该变量:
```
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>My Template</title>
</head>
<body>
<p th:text="${myVar}"></p>
</body>
</html>
```
这样,在页面中就能显示出JavaScript中定义的变量了。
阅读全文