Thymeleaf String字符串操作

最近在学习Thymeleaf,以前没有接触过,不过像这样的模板引擎大致与jsp语言相差不大
在这里整合了一下两个大佬博客的内容,主要是记录给自己看一下

先附上两位大佬的地址(若侵请联系我,我只是大自然的搬运工
https://www.jianshu.com/p/84a25d699cf5
https://blog.csdn.net/qq_33535433/article/details/78876693

什么是Thymeleaf

1.java模板引擎,能够处理HTML,XML,JavaScript,CSS甚至是纯文本。类似于JSP和Freemarker;
2.作用就是把各个用户的公用的东西(页面)做一个提取,然后再根据不同的数据对页面进行渲染(个人理解就是可以做到静态动态分离,即前端可以根据需求绘画页面,无后台也可以正常显示静态页面,若有后台链接的时候,可以直接将数据嵌入进入进行渲染);
3.语法优雅易懂,支持这两种OGNL,SpringEL编码方式;
4.遵循Web的标准,支持HTML5.

一、thymleaf的标准语法(基本上th:属性名,这样的比较多)

<span th:text="...">
<span data-th-text="...">

二、标准的表达式

  1. ${…}
  //  变量表达式
  <span th:text="${book.author.name}"
  // 这样的方式可以直接访问到后台的service层
  ${@dict.getLabel(参数)}

2.消息表达式,也称为文本外部化,国际化或者i18n

  • #{…}(一些日期、字符串处理的方法使用#的多)
    <table>
    <th th:text="#{header.address.city}">...                            
    </th>
    </table>
    ```

3.链接表达式
@{…}

链接表达式可以是相对的,在这种情况下,应用程序上下文将不会作为URL的前缀
也可以是服务器相对(同样的,没有应用文程序上下文前缀)
和协议相对(就像绝对URL,但是浏览器将使用在显示的页面中使用的相同的HTTP协议或者HTTPS协议)
当然,link表达式可以使绝对的
<a th:href=@{"http://www.mycompany.com/main"}>...</a>

4.算术操作

+、-、x、/
<、>、>=、<= 对应 gt、lt、ge、le
==、!= 对应eq、ne
条件运算符:三目运算符(?:)

5.设置属性值
设置任意的属性值

th:attr="action=..."
设置值到指定的属性
th:action="..."
th:value="..."等

固定值布尔属性

checked或者checked = "checked"
th:chaecked="${user.active}"
readonly
default
hidden
selected等

6.迭代器(循环)

th:each
将数组或者链表循环打印出来
数组、list、,map
状态变量:index(从0开始),count(从1开始),size(元素总数)current(当前迭代的变量),even/add(奇数还是偶数),first(当前迭代是不是第一个),last当前迭代是不是最后一个)

7.条件语句

th:if
th:unless
switch与case结合使用

8.模板布局
定义:th:fragment=".名称"
引用:

th:insert="":简单地插入指定的片段作为正文的主标签
th:replace="":用来指定实际片段来替换其主标签
th:include="":类似于th:insert,但是不是插入片段,他只是插入此片段的内容(3.0版本后,不再推荐使用)

不使用th:fragment=“名称”;

使用id="id"
引用:th:insert="~{footer::#id}"
  1. 属性优先级
当在同一个标签中用了多个的属性,谁先别执行?详细可以查看thymeleaf的文档
th:insert=th:replace>th:each>th:if=th:unless=th:switch.....
按照属性的优先级先后执行,与属性的编写的先后顺序无关

10.注释
标准的HTML/XML的注释
thymeleaf解析器级注释块(即有两个包含反斜线的注释)
原型注释块:当模板静态打开的时候,也就是原型设计,不需要用到别注释的代码;而在模板被执行的时候,被注释掉的这一部分原型代码就能别识别出来,并正常显示出这部分代码的作用

11.表达式的基本对象
(1)基本对象:#ctx:上下文对象
-: #locale
(2)request/session等属性
(3)web上下文对象

#request:直接访问当前的请求关联的javax.servlet.http.HttpServletRequest对象
#session:直接访问与当前请求关联的javax.servlet,http.HttpSession对象
#servletContext:直接访问与当前请求关联的javax.servlet.ServletContext对象

主要介绍String字符串的操作

  1. 判断是不是为空:null:
<span th:if="${name} != null">不为空</span>
<span th:if="${name1} == null">为空</span>
  1. 判断是不是为空字符串: “”(上一个主要判断是否为null)
<span th:if="${#strings.isEmpty(name1)}">空的</span>
  1. 判断是否相同:
<span th:if="${name} eq 'jack'">相同于jack,</span>
<span th:if="${name} eq 'ywj'">相同于ywj,</span>
<span th:if="${name} ne 'jack'">不相同于jack,</span>`
  1. 不存在设置默认值:(此处主要是用到了三目表达式)
<span th:text="${name2} ?: '默认值'"></span>
  1. 是否包含(分大小写):
<span th:if="${#strings.contains(name,'ez')}">包ez</span>
<span th:if="${#strings.contains(name,'y')}">包j</span>
  1. 是否包含(不分大小写)
<span th:if="${#strings.containsIgnoreCase(name,'y')}">包j</span>
  1. 下面基本上和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位

若喜欢,请为搬运工点赞。。。
若有错,请指正。。。
若讨厌,请留言并上边×号左键单击

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值