官方文檔入口:https://www.thymeleaf.org/doc/tutorials/2.1/thymeleafspring.htmlhtml
一、首先須要引入thymeleaf的依賴(據官網文檔,thymeleaf-spring3與thymeleaf-spring4用法基本一致)java
<dependency> <groupId>org.thymeleaf</groupId> <artifactId>thymeleaf-spring4</artifactId> <version>3.0.11.RELEASE</version> </dependency>
二、配置thymeleaf的模板解析器、模板引擎與視圖解析器web
官方文檔以xml做爲配置方法,由於不是很方便,此處使用java方式進行配置spring
import javax.servlet.ServletContext; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.web.context.ServletContextAware; import org.thymeleaf.spring4.SpringTemplateEngine; import org.thymeleaf.spring4.view.ThymeleafViewResolver; import org.thymeleaf.templateresolver.ServletContextTemplateResolver; @ComponentScan(basePackages="com.example.demo.controller") public class ServletConfig implements ServletContextAware { private ServletContext servletContext; @Override public void setServletContext(ServletContext servletContext) { this.servletContext = servletContext; } /* 加載thymeleaf模板 */ @Bean public ServletContextTemplateResolver templateResolver() { ServletContextTemplateResolver resolver = new ServletContextTemplateResolver(this.servletContext); resolver.setPrefix("/WEB-INF/templates/"); resolver.setSuffix(".html"); resolver.setTemplateMode(TemplateMode.HTML); resolver.setCharacterEncoding("UTF-8"); resolver.setCacheable(true); return resolver; } /* 模板引擎,渲染並返回結果 */ @Bean public SpringTemplateEngine templateEngine() { SpringTemplateEngine templateEngine = new SpringTemplateEngine(); templateEngine.setTemplateResolver(templateResolver()); templateEngine.setEnableSpringELCompiler(true); return templateEngine; } /* 視圖解析器 */ @Bean public ThymeleafViewResolver viewResolver() { ThymeleafViewResolver viewResolver = new ThymeleafViewResolver(); viewResolver.setTemplateEngine(templateEngine()); viewResolver.setCharacterEncoding("UTF-8"); return viewResolver; } }
在配置模板解析器的時候,我選擇的是實現ServletContextAware接口以獲取ServletContext,並以此爲參數建立ServletContextTemplateResolver。此處應該還能夠用另外一種方式進行配置:app
public class WebConfig implements ApplicationContextAware { private ApplicationContext applicationContext; public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { this.applicationContext = applicationContext; } //加載 Thymeleaf 模板 @Bean public SpringResourceTemplateResolver templateResolver() { SpringResourceTemplateResolver templateResolver = new SpringResourceTemplateResolver(); templateResolver.setApplicationContext(this.applicationContext); templateResolver.setPrefix("/WEB-INF/templates/"); templateResolver.setSuffix(".html"); return templateResolver; } }
三、測試:ide
@RequestMapping("/test") public String test(Model model) throws IOException { List<User> userList = baseService.queryUsers(); model.addAttribute("userList", userList); return "test"; }
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>測試頁面</title> </head> <body> <ul th:each="prop : ${userList}"> <li th:text="${prop.userName}"></li> </ul> </body> </html>
四、此外,html頁面常須要引入靜態文件,爲了飲用方便以及避免靜態文件路徑錯誤致使的異常,須要經過WebMvcConfigurer接口設置靜態文件的根路徑,避免路徑錯誤致使的異常測試
@EnableWebMvc public class ServletConfig implements WebMvcConfigurer,ServletContextAware { public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler("/static/**").addResourceLocations("/WEB-INF/templates/static/"); } }
注:須要在類上加入@EnableWebMvc註解表示啓用java config,不然此方法不會生效。this