Thymeleaf模板引擎

1.Thymeleaf使用流程

Thymeleaf是一个Java模板引擎,支持html、xml、text、javascript、css、raw这几种模型。

  • 使用Thymeleaf首先需要引入命名空间

<html xmlns:th="http://www.thymeleaf.org">

2. 引入依赖

<!--引入thymeleaf模板引擎 注意需要3.0以上的版本否则失效-->
        <dependency>
            <groupId>org.thymeleaf</groupId>
            <artifactId>thymeleaf-spring5</artifactId>
        </dependency>
        <dependency>
            <groupId>org.thymeleaf.extras</groupId>
            <artifactId>thymeleaf-extras-java8time</artifactId>
        </dependency>

3.Spring Boot的Thymeleaf模板引擎默认访问src/main/resources/templates路径的文件夹,可以自行修改另外Thymeleaf默认的页面文件后缀是.html,需要通过Controller将数据传递到页面中,让页面进行动态展示。

@Controller
public class HelloController {
    @RequestMapping("/index")
    public String index(Model model){
        List<Object> list = new ArrayList<Object>();
        list.add("1");
        model.addAttribute("msg","hello,springboot");
        model.addAttribute("msgs","<h1>hello,springboot</h1>");
        model.addAttribute("list",list);
        return "index";
    }
}

4.基本的使用方法

  • Thymeleaf通过”@{}”来引用web静态资源,例如:

<script th:src="@{bootstrap/js/boostrap.min.js}"></script>

  • 访问model模型中的数据,例如访问一个user对象的name属性

<div th:text="${msg}"></div>

<div th:utext="${msgs}"></div> // utext 开启自动拼接标签

  • 数据迭代,例如迭代一个userlist集合
<tr th:each="user : ${userlist}">
    <td th:text="${user.name}">tyrone</td>
    <td th:text="${user.age}">18</td>
</tr>
  • 逻辑处理
    所有的页面模版都存在各种基础逻辑处理,例如:判断、循环处理操作。在 Thymeleaf 之中对于逻辑可以使用如下的一些运算符来完成,例如:and、or、关系比较(>、<、>=、<=、==、!=、lt、gt、le、ge、eq、ne)

  • 判断是不是为空:null:

<span th:if="${name} != null">不为空</span> 
<span th:if="${name1} == null">为空</span>
  • 判断是不是为空字符串: “”
<span th:if="${#strings.isEmpty(name1)}">空的</span>
  • 判断是否相同:
<span th:if="${name} eq 'jack'">相同于jack,</span> 
<span th:if="${name} eq 'ywj'">相同于ywj,</span> 
<span th:if="${name} ne 'jack'">不相同于jack,</span>
  • 不存在设置默认值:
<span th:text="${name2} ?: '默认值'"></span>
  • 是否包含(分大小写):
<span th:if="${#strings.contains(name,'ez')}">包ez</span> 
<span th:if="${#strings.contains(name,'y')}">包j</span>
${#strings.startsWith(name,'o')} 
${#strings.endsWith(name, 'o')} 
${#strings.indexOf(name,frag)}// 下标 
${#strings.substring(name,3,5)}// 截取
${#strings.substringAfter(name,prefix)}// 从 prefix之后的一位开始截取到最后,比如 (ywj,y) = wj, 如果是(abccdefg,c) = cdefg//里面有2个c,取的是第一个c 
${#strings.substringBefore(name,suffix)}// 同上,不过是往前截取 
${#strings.replace(name,'las','ler')}// 替换 
${#strings.prepend(str,prefix)}// 拼字字符串在str前面 
${#strings.append(str,suffix)}// 和上面相反,接在后面 
${#strings.toUpperCase(name)} 
${#strings.toLowerCase(name)} 
${#strings.trim(str)} 
${#strings.length(str)} 
${#strings.abbreviate(str,10)}// 我的理解是 str截取0-10位,后面的全部用…这个点代替,注意,最小是3位
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • IT 1. LeetCode力扣:三个数的最大乘积 Java编写2021-02-22(628. 三个数的最大乘积)...
    幸福大黑鸭阅读 1,040评论 0 0
  • 昨晚的“噩梦” 跟大学好几个班的同学(由其中有很多本班的同学判断)坐车去重庆旅游(由道路坡度几乎都偏垂直状态判断)...
    盐大虾阅读 1,885评论 0 3
  • 夜莺2517阅读 127,807评论 1 9
  • 版本:ios 1.2.1 亮点: 1.app角标可以实时更新天气温度或选择空气质量,建议处女座就不要选了,不然老想...
    我就是沉沉阅读 11,843评论 1 6
  • 我是一名过去式的高三狗,很可悲,在这三年里我没有恋爱,看着同龄的小伙伴们一对儿一对儿的,我的心不好受。怎么说呢,高...
    小娘纸阅读 8,712评论 4 7