Thymeleaf提供了一組Spring集成,允許您將其用作Spring MVC應用程序中全面替代JSP的功能。
Maven依賴
<!-- thymeleaf-spring4 -->
<dependency>
<groupId>org.thymeleaf</groupId>
<artifactId>thymeleaf-spring4</artifactId>
<version>3.0.6.RELEASE</version>
</dependency>
配置模板解析器
JavaConfig的方式:
@Bean
public SpringResourceTemplateResolver templateResolver(){
// SpringResourceTemplateResolver自動與Spring自己集成
// 資源解決基礎設施, 強烈推薦。
SpringResourceTemplateResolver templateResolver = new SpringResourceTemplateResolver();
templateResolver.setApplicationContext(this.applicationContext);
templateResolver.setPrefix("/WEB-INF/templates/");
templateResolver.setSuffix(".html");
// HTML是默認值, 爲了清楚起見, 在此處添加。
templateResolver.setTemplateMode(TemplateMode.HTML);
// 默認情況下, 模板緩存爲true。如果您想要設置爲false
// 模板在修改時自動更新。
templateResolver.setCacheable(true);
return templateResolver;
}
@Bean
public SpringTemplateEngine templateEngine(){
// SpringTemplateEngine自動應用SpringStandardDialect
// 並啓用Spring自己的MessageSource消息解析機制。
SpringTemplateEngine templateEngine = new SpringTemplateEngine();
templateEngine.setTemplateResolver(templateResolver());
// 使用Spring 4.2.4或更高版本啓用SpringEL編譯器
// 可以加快大多數情況下的執行速度, 但是當一個模板中
// 的表達式在不同數據類型之間重用時,
// 可能與特定情況不兼容, 因此該標誌默認爲“false”
// 以實現更安全的向後兼容性。
templateEngine.setEnableSpringELCompiler(true);
return templateEngine;
}
XML的方式
<!-- SpringResourceTemplateResolver自動與Spring自己集成 -->
<!-- 資源解決基礎設施, 強烈推薦。 -->
<bean id="templateResolver"
class="org.thymeleaf.spring4.templateresolver.SpringResourceTemplateResolver">
<property name="prefix" value="/WEB-INF/views/" />
<property name="suffix" value=".html" />
<!-- HTML是默認值, 爲了清楚起見, 在此處添加。 -->
<property name="templateMode" value="HTML" />
<!-- 默認情況下, 模板緩存爲true。如果您想要設置爲false -->
<!-- 模板在修改時自動更新。 -->
<property name="cacheable" value="true" />
</bean>
<!-- SpringTemplateEngine自動應用SpringStandardDialect並 -->
<!-- 使用Spring自己的MessageSource消息解析機制。 -->
<bean id="templateEngine" class="org.thymeleaf.spring4.SpringTemplateEngine">
<property name="templateResolver" ref="templateResolver" />
<!-- 使用Spring 4.2.4或更高版本啓用Spring EL編譯器 -->
<!-- 可以加快大多數情況下的執行速度, 但是當一個模板中 -->
<!-- 的表達式在不同數據類型之間重用時, -->
<!-- 可能與特定情況不兼容, 因此該標誌默認爲“false” -->
<!-- 以實現更安全的向後兼容性。 -->
<property name="enableSpringELCompiler" value="true" />
</bean>
Thymeleaf中的視圖和視圖分解器
@Bean
public ThymeleafViewResolver viewResolver(){
ThymeleafViewResolver viewResolver = new ThymeleafViewResolver();
viewResolver.setTemplateEngine(templateEngine());
// 注意“order”和“viewNames”是可選的
viewResolver.setOrder(1);
viewResolver.setViewNames(new String[] {".html", ".xhtml"});
return viewResolver;
}
13420.2 Thymeleaf中的視圖和視圖分解器
@Bean
public ThymeleafViewResolver viewResolver(){
ThymeleafViewResolver viewResolver = new ThymeleafViewResolver();
viewResolver.setTemplateEngine(templateEngine());
// 注意“order”和“viewNames”是可選的
viewResolver.setOrder(1);
viewResolver.setViewNames(new String[] {".html", ".xhtml"});
return viewResolver;
}
或者是以XML的格式:
<bean class="org.thymeleaf.spring4.view.ThymeleafViewResolver">
<property name="templateEngine" ref="templateEngine" />
<!-- 注意“order”和“viewNames”是可選的 -->
<property name="order" value="1" />
<property name="viewNames" value="*.html,*.xhtml" />
</bean>