6.4.1 配置 Thymeleaf 视图解析器
为了要在 Spring 中使用 Thymeleaf,我们需要配置三个启用 Thymeleaf 与 Spring 集成的 bean:
  • ThymeleafViewResolver:将逻辑视图名称解析为 Thymeleaf 模板视图;
  • SpringTemplateEngine:处理模板并渲染结果;
  • TemplateResolver:加载 Thymeleaf 模板。
如下为声明这些 bean 的 Java 配置。
程序清单 6.4 使用 Java 代码的方式,配置 Spring 对 Thymeleaf 的支持
1
@Bean
2
public ViewResolver viewResolver(SpringTemplateEngine templateEngine) {
3
ThymeleafViewResolver viewResolver = new ThymeleafViewResolver();
4
viewResolver.setTemplateEngine(templateEngine);
5
return viewResolver;
6
}
7
8
@Bean
9
public SpringTemplateEngine templateEngine(TemplateResolver templateResolver) {
10
SpringTemplateEngine templateEngine = new SpringTemplateEngine();
11
templateEngine.setTemplateResolver(templateResolver);
12
return templateEngine;
13
}
14
15
@Bean
16
public TemplateResolver templateResolver() {
17
TemplateResolver templateResolver = new ServletContextTemplateResolver();
18
templateResolver.setPrefix("/WEB-INF/views/");
19
templateResolver.setSuffix(".html");
20
templateResolver.setTemplateMode("HTML5");
21
return templateResolver;
22
}
Copied!
如果你更愿意使用 XML 来配置 bean,那么如下的声明能够完成该任务。
程序清单 6.5 使用 XML 的方式,配置 Spring 对 Thymeleaf 的支持
1
<bean id="viewResolver" class="org.thymeleaf.spring3.view.ThymeleafViewResolver"
2
p:templateEngine-ref="templateEngine" />
3
4
<bean id="templateEngine" class="org.thymeleaf.spring3.SpringTemplateEngine"
5
p:templateResolver-ref="templateResolver" />
6
7
8
<bean id="templateResolver" class="org.thymeleaf.templateResolver.ServletContextTemplateResolver"
9
p:prefix="/WEB-INF/templates/"
10
p:suffix=".html"
11
p:templateMode="HTML5" />
Copied!
不管使用哪种配置方式,Thymeleaf 都已经准备就绪了,它可以将响应中的模板渲染到 Spring MVC 控制器所处理的请求中。
ThymeleafViewResolver 是 Spring MVC 中 ViewResolver 的一个 实现类。像其他的视图解析器一样,它会接受一个逻辑视图名称,并将其解析为视图。不过在该场景下,视图会是一个 Thymeleaf 模板。
需要注意的是 ThymeleafViewResolver bean 中注入了一个对 Spring-TemplateEngine bean的引用。SpringTemplateEngine 会在 Spring 中启用 Thymeleaf 引擎,用来解析模板,并基于这些模板渲染结果。可以看到,我们为其注入了一个 TemplateResolver bean 的引用。
TemplateResolver 会最终定位和查找模板。与之前配置 InternalResource-ViewResolver 类似,它使用了 prefix 和 suffix 属性。前缀和后缀将会与逻辑视图名组合使用,进而定位 Thymeleaf 引擎。它的 templateMode 属性被设置成了 HTML 5,这表明我们预期要解析的模板会渲染成 HTML 5输出。
所有的 Thymeleaf bean 都已经配置完成了,那么接下来我们该创建几个视图了。
Last modified 2yr ago
Copy link