Thymeleaf ialah generasi baharu enjin templat Java, serupa dengan enjin templat Java tradisional seperti Velocity dan FreeMarker. Berbeza daripada enjin templat Java tradisional, Thymeleaf menyokong prototaip HTML, yang membenarkan jurutera bahagian hadapan untuk terus membuka dan melihat gaya dalam penyemak imbas, dan jurutera bahagian belakang untuk melihat kesan paparan berdasarkan data sebenar. Rakan sekerja, Spring Boot menyediakan penyelesaian konfigurasi automatik Thymeleaf, jadi sangat mudah untuk menggunakan Thymeleaf dalam Spring Boot. Berikut ialah langkah yang tersedia untuk menyepadukan Thymeleaf ke dalam Spring Boot
Buat projek Spring Boot, dan kemudian tambah spring-boot-starter-web dan spring. -boot-starter-thymeleaf bergantung pada
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!-- 整合Thymeleaf --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency>
Spring Boot menyediakan Thymeleaf dengan kelas konfigurasi automatik ThymeleafAutoConfiguration sifat konfigurasi yang berkaitan adalah dalam kelas ThymeleafProperties kod kelas ThymeleafProperties adalah seperti berikut:
@ConfigurationProperties(prefix = "spring.thymeleaf") public class ThymeleafProperties { private static final Charset DEFAULT_ENCODING = StandardCharsets.UTF_8; public static final String DEFAULT_PREFIX = "classpath:/templates/"; public static final String DEFAULT_SUFFIX = ".html"; }
Seperti yang anda lihat daripada konfigurasi ini, lokasi templat lalai ialah classpath:/templates/ dan akhiran templat lalai ialah .html. Apabila menggunakan IDEA untuk mencipta projek Spring Boot, beberapa fail akan dibuat dalam folder templat secara lalai. Jika anda perlu menyesuaikan parameter konfigurasi Thymeleaf lalai, anda boleh mengkonfigurasinya dalam application.properties Beberapa konfigurasi biasa adalah seperti berikut:
#Sama ada untuk mendayakan caching, ia boleh ditetapkan kepada palsu semasa pembangunan. , dan lalai adalah benar
spring.thymeleaf.cache=false
#Semak sama ada templat wujud, lalainya adalah benar
spring.thymeleaf.check-template=true
#Semak sama ada templat lokasi wujud, lalainya adalah benar
spring.thymeleaf.check-template-location=true
#Pengekodan fail templat
spring.thymeleaf.encoding=UTF-8
#Lokasi fail templat
spring.thymeleaf.prefix=classpath:/ templates/
#Content-Type configuration
spring.thymeleaf.servlet.content-type=text/html
#Templat fail akhiran
spring.thymeleaf.suffix =.html
untuk mencipta kelas entiti Buku, dan kemudian kembalikan ModelAndView dalam Pengawal, seperti berikut:
public class Book { private int id; private String name; private String author; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getAuthor() { return author; } public void setAuthor(String author) { this.author = author; } }
@RestController public class BookController { @GetMapping(value = "/books") public ModelAndView books(){ List<Book> books = new ArrayList<>(); Book b1 = new Book(); b1.setId(1); b1.setAuthor("唐家三少"); b1.setName("斗罗大陆Ⅰ"); Book b2 = new Book(); b2.setId(2); b2.setAuthor("唐家三少"); b2.setName("斗罗大陆Ⅱ"); books.add(b1); books.add(b2); ModelAndView modelAndView = new ModelAndView(); modelAndView.addObject("books",books); modelAndView.setViewName("books"); return modelAndView; } }
dalam direktori sumber Cipta books.html dalam direktori templat, seperti berikut:
<!DOCTYPE html> <html lang="en" xmlns:th="http://www.thymeleaf.org"> <head> <meta charset="UTF-8"> <title>图书列表</title> </head> <body> <table border="1"> <tr> <td>图书编号</td> <td>图书名称</td> <td>图书作者</td> </tr> <tr th:each="book:${books}"> <td th:text="${book.id}"></td> <td th:text="${book.name}"></td> <td th:text="${book.author}"></td> </tr> </table> </body> </html>
Penerangan kod:
Import pertama ruang nama Thymeleaf
Integrate FreeMarker
1 Cipta projek dan tambah kebergantungan
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!-- 整合FreeMarker --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-freemarker</artifactId> </dependency>
2. Konfigurasikan FreeMarker
@ConfigurationProperties(prefix = "spring.freemarker") public class FreeMarkerProperties extends AbstractTemplateViewResolverProperties { public static final String DEFAULT_TEMPLATE_LOADER_PATH = "classpath:/templates/"; public static final String DEFAULT_PREFIX = ""; public static final String DEFAULT_SUFFIX = ".ftl"; ... }
FreeMarker lalai Lokasi templat adalah sama dengan Thymeleaf, kedua-duanya dalam classpath:/templates/. Akhiran fail lalai ialah .ftl , seperti berikut:
3. Pengawal
4 >
Buat fail books.ftl dalam direktori templat di bawah direktori sumber, seperti berikut :<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>图书列表FreeMarker</title> </head> <body> <table border="1"> <tr> <td>图书编号</td> <td>图书名称</td> <td>图书作者</td> </tr> <#if books ?? && (books?size>0)> <#list books as book> <tr> <td>${book.id}</td> <td>${book.name}</td> <td>${book.author}</td> </tr> </#list> </#if> </table> </body> </html>
Atas ialah kandungan terperinci Bagaimana SpringBoot mengintegrasikan teknologi lapisan paparan Thymeleaf dan FreeMarker. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!