官方文档入口: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