SpringBoot之旅:Java模版引擎Thymeleaf详解(⼀)
1.Thymeleaf是什么?
Thymeleaf是⾯向Web和独⽴环境的现代服务器端Java模板引擎,能够处理HTML,XML,JavaScript,CSS甚⾄纯⽂本。
它的主要⽬标是提供⼀种优雅的、⾼度可维护的创建模版的⽅式。为了实现这⼀点,它建⽴在⾃然模版的概念上,将其逻辑注⼊到模版中,不会影响模版被⽤作设计原型。这改善了设计的沟通,弥合了设计和开发团队之间的差距。
2.SpringBoot与Thymeleaf集成
/**
* 实现ApplicationContextAware是为了得到ApplicationContext对象
*
* @author Administrator
*
*/
@Configuration
public class ThymeleafConfig implements ApplicationContextAware {
private ApplicationContext applicationContext;
@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
this.applicationContext = applicationContext;
}
/**
* 配置Thymeleaf模板解析器
*
* @return
*/
@Bean
public SpringResourceTemplateResolver templateResolver() {
SpringResourceTemplateResolver templateResolver = new SpringResourceTemplateResolver();
templateResolver.setApplicationContext(this.applicationContext);
// 模板⽂件前缀
templateResolver.setPrefix("classpath:/templates/");
// 模板⽂件后缀
templateResolver.setSuffix(".html");
/
/ 配置Thymeleaf模板模式
templateResolver.setTemplateMode(TemplateMode.HTML);
// 默认情况下,模板缓存为true,提供缓存,当希望模板修改时,⾃动更新模板,则设置为false
templateResolver.setCacheable(false);
return templateResolver;
}
/**
* 配置Thymeleaf模板引擎
*
* @return
*/
@Bean
public SpringTemplateEngine templateEngine() {
SpringTemplateEngine templateEngine = new SpringTemplateEngine();
templateEngine.setTemplateResolver(templateResolver());
templateEngine.setEnableSpringELCompiler(true);
// 在Thymeleaf模板中添加模板⽅⾔,使其模板⽂件中可以使⽤shiro标签
// 当然在这⾥,需要在l⽂件中加⼊相关依赖:
// <dependency>
// <groupId>com.github.theborakompanioni</groupId>
// <artifactId>thymeleaf-extras-shiro</artifactId>
// <version>2.0.0</version>
java上下文context/
/ </dependency>
// </dependency>
// 当然在这⾥,会出现以下异常:ClassNotFoundException:org.thymeleaf.dialect.AbstractProcessorDialect.AbstractProcessorDialect
// 不到类AbstractProcessorDialect;原因是由于我们使⽤的SpringBoot版本是1.5.4.RELEASE,在集成Thymeleaf时,它使⽤的版本是2.1.5.RELEASE, // ⽽在这个版本中没有此类org.thymeleaf.dialect.AbstractProcessorDialect.AbstractProcessorDialect,所以我们应当更改Thymeleaf版本为3.0.7.RELEASE; // 在l配置⽂件中的<properties>标签中添加如下:
// <thymeleaf.version>3.0.7.RELEASE</thymeleaf.version>
// <thymeleaf-layout-dialect.version>2.2.2</thymeleaf-layout-dialect.version>
// 当然我们还可以更改thymeleaf-extras-shiro的版本为1.2.1即可
IDialect dialect = new ShiroDialect();
templateEngine.addDialect(dialect);
return templateEngine;
}
/**
* 配置Thymeleaf视图解析器
*
* @return
*/
@Bean
public ThymeleafViewResolver viewResolver() {
ThymeleafViewResolver viewResolver = new ThymeleafViewResolver();
viewResolver.setTemplateEngine(templateEngine());
return viewResolver;
}
}
3.使⽤Thymeleaf模板引擎
在创建的HTML⽂件中的<html>标签中添加⼀个xmlns:th属性,配置如下:
<html xmlns:th="">
4.标准表达式语法
(1)简单表达式
可变表达式:${...}
选择变量表达式:*{...}
消息表达式:#{...}
链接⽹址表达式:@{...}
⽚段表达式:~{...}
(2)⽂字
⽂本:‘welcome’,...
数字:0,2,4,...
布尔:true,false
空值:null
⽂字标记:one
(3)⽂字操作
字符串连接:+
字符串替代:|The name is ${name}|
(4)算数运算
⼆元运算符:+,-,*,/,%
减号(⼀元运算符):-
(5)布尔运算:
⼆元运算符:and,or
布尔否定(⼀元运算符):!,not
(6)⽐较和相等运算
⽐较运算符:>,<,>=,<=(gt,lt,ge,le)
相等运算符:= =,!=(eq,ne)
(7)条件运算符:
IF-THEN:(if) ? (then)
IF-THEN-ELSE:(if) ? (then) : (else)
Default:(value) ?: (defaultvalue)
(8)特殊操作符:
⽆操作符:_
5.表达式基本对象
#ctx:上下⽂对象
#vars:上下⽂变量
#locale:上下⽂区域设置
#request:(仅在Web上下⽂中)HttpServletRequest对象。
#response:(仅在Web上下⽂中)HttpServletResponse对象。
#session:(仅在Web上下⽂中)HttpSession对象。
#servletContext:(仅在Web上下⽂中)ServletContext对象。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论