SpringBoot项目开发(四):Thymeleaf 模版引擎

1.在上篇 控制器与页面 简单的介绍了怎么引入项目,怎么和控制器的action配合打开页面,本篇将分享它在项目中经常使用的场景
2.thymeleaf介绍
  • Thymeleaf 官网:www.thymeleaf.org,可下载操作手册
  • Thymeleaf 可以在有网络和无网络的环境下皆可运行,即它可以让美工在浏览器查看静态效果,也可以让程序员在服务器查看带数据的动态页面效果
  • html模板引擎,它可以完全替代 JSP,提供spring标准方言和一个与 SpringMVC 完美集成的可选模块,可以快速的实现表单绑定、属性编辑器、国际化等功能
3.在application.properties中,进行如下配置
# thymeleaf配置,开发环境不启用缓存,正式环境下请启用缓存,提高性能
spring.thymeleaf.cache=false
# thymeleaf对html元素格式要求严格,设置它的mode为HTML,忘记结束标签后不会报错
spring.thymeleaf.mode=HTML

springboot封装的thymeleaf默认是2.x版本,如果想使用最新的3.x版本可以在< properties >中配置版本

<properties>
   <thymeleaf.version>3.0.10.RELEASE</thymeleaf.version>
   <thymeleaf-layout-dialect.version>2.2.2</thymeleaf-layout-dialect.version>
</properties>

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
4.下面详细分享一些常用用法

请提前在项目resources目录下创建css、js文件夹,分别创建index.css,common.js文件,并在js文件夹下放入jquery.min.js,后面的html和模版需要用到

属性汇总

......
编号 属性 描述 示例
1 th:text 计算其值表达式并将结果设置为标签的标签体

中国

值为 null 为空时,整个标签不显示任何内容。
2 th:utext th:text 会对结果中的特殊字符转义,th:utext 不会转义,适合后端直接向前端输出 html 标签的内容

中国

,,userInfo可以是html内容。
3 th:attr 为标签中的任意属性设置,可以一次设置多个属性 前往百度
4 th:* 为 html 指定的属性设值,一次设置一个 前往百度
5 th:alt-title 同时为 alt 与 title 属性赋值 th:A-B
6 th:lang-xmllang 同时为 lang 、xmllang 属性赋值
7 th:fragment 定义模板片段
8  th:insert 将被引用的模板片段插⼊到自己的标签体中
9 th:replace 将被引用的模板片段替换掉自己
10 th:include 类似于 th:insert,⽽不是插⼊⽚段,它只插⼊此⽚段的内容
11 th:remove 删除模板中的某些代码片段
12 th:each 迭代数据,如 数组、List、Map 等
13 th:if 条件为 true 时,显示模板⽚段,否则不显示

已婚1

14

th:unless

条件为 false 时,显示模板⽚段,否则不显示

已婚2

15

th:switch 

与 Java 中的 switch 语句等效,有条件地显示匹配的内容
16 th:case 配合 th:switch 使用

   

管理员


   

操作员


   

未知用户


17  th:with 定义局部变量
18

th:inline

禁用内联表达式,内联js,内联css

在需要引用头部、尾部的html文件中,使用 th:replace=“template/common :: header” 模版路径 :: 模版名称




    
    SpringBoot项目开发系列

    
    
    
    
    



    
首页
SpringBoot项目开发系列

(2)变量表达式: Spring EL表达式(在Spring术语中也叫model attributes)。如下所示

直接 . 出后台返回对象属性         
直接循环出后台返回数组-list属性  
可以写th:if 判断,
我大于20啦
th:unless与 if 相反
我还年轻
5.贴下我的代码和运行效果,项目中常用的就这些
    @RequestMapping("/index")
    public String index(ModelMap model){
        List list = new ArrayList();
        for(int i=1 ; i < 10 ; i++){
            User user = new User();
            user.setId(i);
            user.setAge(19 + i);
            user.setName("zy" + i);
            list.add(user);
        }
		//在方法中使用ModelMap,然后把值返回到html页面
        model.addAttribute("user",list.get(0));
        model.addAttribute("users",list);
        return "index";//返回 tempaltes 下的 index.html
    }



    
    SpringBoot项目开发系列
    
    


    
首页
SpringBoot项目开发系列
我大于20啦
我还年轻
---thymeleaf --each循环,一般table表格展示数据居多

效果如下
SpringBoot项目开发(四):Thymeleaf 模版引擎_第1张图片

还有字符串操作

判断是不是为空:null: 
不为空 
为空 
判断是不是为空字符串: “” 
空的 
判断是否相同: 
相同于jack, 
相同于ywj, 
不相同于jack, 
不存在设置默认值: 
 
是否包含(分大小写): 
包ez 
包j 
是否包含(不分大小写) 
包j 
同理。。。下面的和JAVA的String基本一样。。。。不笔记解释,官网有

${#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位

thymeleaf还有很多其他 th标签 ,比如表单,url等,但我喜欢用原生的属性,ajax操作等

下一篇:HikariCP数据库连接池

你可能感兴趣的:(spring,boot,java,SpringBoot,项目开发)