Thymeleaf 문법 데이터 지연 로드 사용 실례를 간단히 이해하기
Spring Boot 컨트롤러에서 데이터를 설정할 때 LazyContextVariable을 사용하면 이 기능을 수행할 수 있습니다.
개발 환경: IntelliJ IDEA 2019.2.2
Spring Boot 버전: 2.1.8
demo라는 Spring Boot 항목을 새로 만듭니다.
1、pom.xml
Thymeleaf 의존 가입
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
2、src/main/java/com/example/demo/User.java
package com.example.demo;
public class User {
Integer id;
String name;
public User(Integer id, String name) {
this.id = id;
this.name = name;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
3、src/main/java/com/example/demo/TestController.java
package com.example.demo;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.thymeleaf.context.LazyContextVariable;
import java.util.ArrayList;
import java.util.List;
@Controller
public class TestController {
@RequestMapping("/{show}")
public String test(Model model, @PathVariable("show") boolean show){
model.addAttribute("users", new LazyContextVariable() {
@Override
protected Object loadValue() {
return queryUsers();
}
});
model.addAttribute("show", show);
return "test";
}
private List<User> queryUsers(){
System.out.println(" , ");
List<User> users = new ArrayList<User>();
users.add(new User(1," "));
users.add(new User(2," "));
users.add(new User(3," "));
return users;
}
}
4、src/main/resources/templates/test.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style type="text/css">
table { border-collapse:collapse;}
td { border: 1px solid #C1DAD7;}
</style>
</head>
<body>
<table th:if="${show == true}">
<tr th:each="user : ${users}">
<td th:text="${user.id}"></td>
<td th:text="${user.name}"></td>
</tr>
</table>
</body>
</html>
브라우저 액세스:http://localhost:8080/false, 페이지에 데이터가 표시되지 않았습니다. 컨트롤러에 정보가 출력되지 않았습니다.
http://localhost:8080/true, 페이지에 데이터를 표시하고 컨트롤러는'아날로그 조회 데이터, 실제 응용 프로그램에서 데이터베이스를 직접 조회할 수 있습니다'를 출력합니다.
이상은 본문의 전체 내용입니다. 여러분의 학습에 도움이 되고 저희를 많이 응원해 주십시오.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Thymeleaf에서 th:if와 th:insert를 조합하여 사용할 때의 주의여러 번 같은 실패를 해 버리므로 계명을 겸하여 기사에 남겨두기로 한다. 실패 사례 예를 들어, 가격이 존재하는 경우에만 특정 HTML을 삽입하려는 경우, 그만 다음과 같은 기술을 해 버린다. productList....
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.