thymeleaf如何遍历Controller层中的List<>
时间: 2023-06-06 11:08:28 浏览: 111
Thymeleaf提供了一些内置的迭代器用于遍历集合,其中包括th:each,可以将一个集合中的元素逐个进行渲染。在Controller中,可以通过将List传递到模板中,在模板中使用th:each来遍历List。例如,假设Controller中有一个名为userList的List,可以在模板中使用以下代码来遍历这个List中的元素:
<table>
<thead>
<tr>
<th>ID</th>
<th>Name</th>
<th>Age</th>
</tr>
</thead>
<tbody>
<tr th:each="user : ${userList}">
<td th:text="${user.id}"></td>
<td th:text="${user.name}"></td>
<td th:text="${user.age}"></td>
</tr>
</tbody>
</table>
在上面的代码中,th:each="user : ${userList}"表示遍历userList集合,并将每个元素赋值给名为user的变量。然后就可以使用th:text将该用户的属性渲染到表格中。
相关问题
ssm thymeleaf获取controller 重定向返回list集合
可以使用redirect前缀将请求重定向到Controller中的另一个方法,然后在这个方法中获取list集合并返回给Thymeleaf模板。
例如,假设我们有一个Controller类,其中有两个方法:一个用于返回表单页面,另一个用于处理表单提交并重定向到另一个Controller方法以获取列表并返回给Thymeleaf模板。
```java
@Controller
public class MyController {
@GetMapping("/form")
public String showForm(Model model) {
model.addAttribute("myObject", new MyObject());
return "myForm";
}
@PostMapping("/submit")
public String handleSubmit(@ModelAttribute("myObject") MyObject myObject) {
// 处理表单提交并重定向到list方法
return "redirect:/list";
}
@GetMapping("/list")
public String showList(Model model) {
List<MyObject> myObjects = // 获取对象列表
model.addAttribute("myObjects", myObjects);
return "myList";
}
}
```
在上面的示例中,`showForm`方法返回表单页面,`handleSubmit`方法处理表单提交并重定向到`showList`方法以获取对象列表。在`showList`方法中,我们可以获取对象列表并将其添加到模型中,然后返回列表页面。
在Thymeleaf模板中,我们可以使用`th:if`指令检查模型中是否存在对象列表,如果存在,则可以使用`th:each`指令遍历列表并显示每个对象的属性。
```html
<!-- myForm.html -->
<form th:action="@{/submit}" th:object="${myObject}" method="post">
<!-- 表单字段 -->
</form>
<!-- myList.html -->
<div th:if="${myObjects}">
<table>
<thead>
<tr>
<th>属性1</th>
<th>属性2</th>
<!-- ... -->
</tr>
</thead>
<tbody>
<tr th:each="myObject : ${myObjects}">
<td th:text="${myObject.property1}"></td>
<td th:text="${myObject.property2}"></td>
<!-- ... -->
</tr>
</tbody>
</table>
</div>
```
以下是一个简单的基于JavaScript的查看图片代码: Copy <!DOCTYPE html> <html> <head> <title>查看图片</title> <meta charset="utf-8"> <style> img { max-width: 100%; height: auto; } </style> </head> <body> <!-- 图片列表 --> <div id="img-list"> <img src="img1.jpg" alt="图片1"> <img src="img2.jpg" alt="图片2"> <img src="img3.jpg" alt="图片3"> <img src="img4.jpg" alt="图片4"> </div> <!-- 查看图片 --> <div id="view-img"> <img id="view-img-content" src="" alt=""> <button id="close-view-img-btn" type="button">关闭</button> </div> <script> // 获取图片列表 var imgList = document.getElementById('img-list').getElementsByTagName('img'); // 查看图片操作 var viewImg = { container: document.getElementById('view-img'), content: document.getElementById('view-img-content'), closeBtn: document.getElementById('close-view-img-btn'), open: function(imgSrc) { this.content.src = imgSrc; this.container.style.display = 'block'; }, close: function() { this.container.style.display = 'none'; } }; // 绑定查看图片事件 for (var i = 0; i < imgList.length; i++) { imgList[i].addEventListener('click', function() { var imgSrc = this.getAttribute('src'); viewImg.open(imgSrc); }); } viewImg.closeBtn.addEventListener('click', function() { viewImg.close(); }); </script> </body> </html> 帮我把代码的controller和所需方法分区写出来要基于Javascript和springboot
基于JavaScript和Spring Boot,你可以将代码分为控制器和所需方法。以下是一个示例:
JavaScript部分(前端):
```html
<!DOCTYPE html>
<html>
<head>
<title>查看图片</title>
<meta charset="utf-8">
<style>
img {
max-width: 100%;
height: auto;
}
</style>
</head>
<body>
<!-- 图片列表 -->
<div id="img-list">
<img src="img1.jpg" alt="图片1">
<img src="img2.jpg" alt="图片2">
<img src="img3.jpg" alt="图片3">
<img src="img4.jpg" alt="图片4">
</div>
<!-- 查看图片 -->
<div id="view-img">
<img id="view-img-content" src="" alt="">
<button id="close-view-img-btn" type="button">关闭</button>
</div>
<script src="your-script.js"></script> <!-- 引入你的JavaScript代码 -->
</body>
</html>
```
JavaScript部分(your-script.js):
```javascript
// 获取图片列表
var imgList = document.getElementById('img-list').getElementsByTagName('img');
// 查看图片操作
var viewImg = {
container: document.getElementById('view-img'),
content: document.getElementById('view-img-content'),
closeBtn: document.getElementById('close-view-img-btn'),
open: function(imgSrc) {
this.content.src = imgSrc;
this.container.style.display = 'block';
},
close: function() {
this.container.style.display = 'none';
}
};
// 绑定查看图片事件
for (var i = 0; i < imgList.length; i++) {
imgList[i].addEventListener('click', function() {
var imgSrc = this.getAttribute('src');
viewImg.open(imgSrc);
});
}
viewImg.closeBtn.addEventListener('click', function() {
viewImg.close();
});
```
Spring Boot部分(后端):
```java
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
@Controller
public class ImageController {
@GetMapping("/")
public String getImagePage() {
return "index";
}
}
```
在Spring Boot中,你可以使用Thymeleaf或其他模板引擎来处理HTML模板。将上述HTML代码保存为`index.html`文件,然后将其放置在Spring Boot项目的模板目录中。例如,如果你使用的是Thymeleaf,则将HTML文件放置在`src/main/resources/templates/`目录下。
此外,你还需要在Spring Boot应用程序的配置中启用静态资源处理。可以通过在`application.properties`文件中添加以下配置来实现:
```
spring.resources.static-locations=classpath:/static/
```
这样,当访问根路径时,将会加载这个HTML页面,并且JavaScript代码将绑定到图片列表的点击事件上。
阅读全文