Code ví dụ hiển thị List, Set, Map với Thymeleaf
Code ví dụ hiển thị danh sách, collection (List, Set, Map) với Spring + Thymeleaf
Để hiển thị danh sách với Thymeleaf, ta sử dụng thẻ th:each
Ví dụ:
<ul th:if="${listUser != null && !listUser.empty}">
<li th:each="user: ${listUser}" th:text="${user.name}"></li>
</ul>
Hiển thị List, Set, Map với Thymeleaf
Các công nghệ sử dụng trong bài viết này
Tạo Maven Project
Thư viện sử dụng:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>stackjava.com</groupId>
<artifactId>SpringThymeleafDisplayCollection</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<properties>
<spring.version>5.0.2.RELEASE</spring.version>
<thymeleaf.version>3.0.9.RELEASE</thymeleaf.version>
</properties>
<dependencies>
<!-- Spring -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring.version}</version>
</dependency>
<!-- Thymeleaf -->
<dependency>
<groupId>org.thymeleaf</groupId>
<artifactId>thymeleaf</artifactId>
<version>${thymeleaf.version}</version>
</dependency>
<dependency>
<groupId>org.thymeleaf</groupId>
<artifactId>thymeleaf-spring5</artifactId>
<version>${thymeleaf.version}</version>
</dependency>
</dependencies>
</project>
File Spring config:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd">
<context:component-scan base-package="stackjava.com.springthymeleaf" />
<bean id="templateResolver"
class="org.thymeleaf.spring5.templateresolver.SpringResourceTemplateResolver">
<property name="prefix" value="/WEB-INF/templates/" />
<property name="suffix" value=".html" />
<property name="templateMode" value="HTML5" />
<property name="cacheable" value="false" />
</bean>
<bean id="templateEngine" class="org.thymeleaf.spring5.SpringTemplateEngine">
<property name="templateResolver" ref="templateResolver" />
</bean>
<bean class="org.thymeleaf.spring5.view.ThymeleafViewResolver">
<property name="templateEngine" ref="templateEngine" />
</bean>
</beans>
File web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
version="2.5">
<display-name>SpringThymeleaf</display-name>
<servlet>
<servlet-name>spring-mvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>spring-mvc</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
File entities:
package stackjava.com.springthymeleaf.entities;
public class User {
private int id;
private String name;
private String address;
// getter - setter
}
File Controller:
package stackjava.com.springthymeleaf.controller;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import stackjava.com.springthymeleaf.entities.User;
@Controller
public class BaseController {
public List<User> initList() {
List<User> listUser = new ArrayList<User>();
listUser.add(new User(1, "Batman", "DC"));
listUser.add(new User(2, "Super Woman", "DC"));
listUser.add(new User(3, "Super Man", "DC"));
return listUser;
}
public Set<User> initSet() {
Set<User> setUser = new HashSet<User>();
setUser.add(new User(4, "Iron Man", "Marvel"));
setUser.add(new User(5, "Spider Man", "Marvel"));
setUser.add(new User(6, "Ant Man", "Marvel"));
return setUser;
}
public Map<Integer, User> initMap() {
Map<Integer, User> mapUser = new HashMap<Integer, User>();
mapUser.put(7, new User(7, "Mickey", "Disney"));
mapUser.put(8, new User(8, "Donal", "Disney"));
return mapUser;
}
@RequestMapping("/")
public String index(final Model model) {
model.addAttribute("listUser", this.initList());
model.addAttribute("setUser", this.initSet());
model.addAttribute("mapUser", this.initMap());
return "index";
}
}
File view:
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>Spring MVC + Thymeleaf</title>
</head>
<body>
<h1>Spring MVC + Thymeleaf: Display Collection</h1>
<h2>Display List:</h2>
<ul th:if="${listUser != null && !listUser.empty}">
<li th:each="user: ${listUser}" th:text="${user.id} + ' - ' + ${user.name} + ' - ' + ${user.address}"></li>
</ul>
<h2>Display Set:</h2>
<ul th:if="${setUser != null && !setUser.empty}">
<li th:each="user: ${listUser}" th:text="${user.id} + ' - ' + ${user.name} + ' - ' + ${user.address}"></li>
</ul>
<h2>Display Map:</h2>
<ul th:if="${mapUser != null && !mapUser.empty}">
<li th:each="element: ${mapUser}" th:text="${element.value.id} + ' - ' + ${element.value.name} + ' - ' + ${element.value.address}"></li>
<!-- OR -->
<!-- <li th:each="user: ${mapUser.values()}" th:text="${user.id} + ' - ' + ${user.name} + ' - ' + ${user.address}"></li> -->
</ul>
</body>
</html>
Demo:
Code ví dụ hiển thị List, Set, Map với Thymeleaf
Okay, Done!
Download code ví dụ trên tại đây
References:
http://www.thymeleaf.org/doc/tutorials/3.0/usingthymeleaf.html

