thymeleaf视图解析器
时间: 2024-12-30 12:28:21 浏览: 8
### 配置和使用 Thymeleaf 视图解析器
#### Maven 依赖配置
为了在项目中集成 Thymeleaf 和 Spring MVC 或者 Spring Boot,需要先在 `pom.xml` 中加入 Thymeleaf 的相关依赖。对于不同版本的 Thymeleaf-Spring 整合包,具体版本号可能有所不同。
```xml
<dependency>
<groupId>org.thymeleaf</groupId>
<artifactId>thymeleaf-spring5</artifactId>
<version>3.0.12.RELEASE</version>
</dependency>
```
此段代码展示了如何向项目的构建文件添加 Thymeleaf 对于 Spring 5 支持的相关库[^1]。
#### Java Config 方式配置视图解析器
如果采用的是基于 Java 类的方式来进行 Bean 定义的话,可以通过创建一个类来注册并自定义 ThymeleafTemplateResolver 实例以及 TemplateEngine 来完成视图解析器的设置:
```java
@Configuration
public class WebConfig implements WebMvcConfigurer {
@Bean
public ClassLoaderTemplateResolver templateResolver() {
var resolver = new ClassLoaderTemplateResolver();
resolver.setPrefix("templates/");
resolver.setSuffix(".html");
resolver.setTemplateMode(TemplateMode.HTML);
resolver.setCharacterEncoding(StandardCharsets.UTF_8.name());
return resolver;
}
@Bean
public SpringTemplateEngine templateEngine(ITemplateResolver templateResolver) {
final SpringTemplateEngine engine = new SpringTemplateEngine();
engine.addDialect(new LayoutDialect()); // 添加布局方言支持
engine.setTemplateResolver(templateResolver);
return engine;
}
@Override
public void configureViewResolvers(ViewResolverRegistry registry){
registry.viewResolver(thymeleafViewResolver());
}
@Bean
public ThymeleafViewResolver thymeleafViewResolver(SpringTemplateEngine templateEngine) {
var viewResolver = new ThymeleafViewResolver();
viewResolver.setTemplateEngine(templateEngine);
viewResolver.setCharacterEncoding(StandardCharsets.UTF_8.name());
return viewResolver;
}
}
```
这段代码片段说明了通过编程方式设定 Thymeleaf 解析 HTML 文件的位置前缀、后缀名以及其他属性,并将其与 Spring MVC 结合起来工作。
#### 使用 Thymeleaf 创建动态网页
一旦完成了上述配置之后,在控制器层返回逻辑视图名称即可让框架自动寻找对应的 `.html` 文件作为物理视图资源。例如下面这个简单的例子展示了一个名为 "home" 的页面映射到 `/WEB-INF/views/home.html` 路径下的处理过程(假设默认路径为 `src/main/resources/templates/`):
```java
@Controller
@RequestMapping("/")
public class HomeController {
@GetMapping("")
String home(Model model) {
model.addAttribute("message", "Welcome to our website!");
return "home";
}
}
```
此时访问根 URL 就会触发该方法执行并将消息参数传递给前端用于渲染页面。
阅读全文