thymeleaf学习笔记

介绍

官方网址:https://www.thymeleaf.org/

官方文档地址:https://www.thymeleaf.org/doc/tutorials/3.0/thymeleafspring.pdf

thymeleaf是Spring推荐使用的模板引擎

导入依赖

	<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-thymeleaf</artifactId>
	</dependency>

默认格式与前后缀

我们通过查看spring boot的自动配置文档可知,使用thymeleaf的时候,对页面进行解析会自动拼接前后缀,默认支持html页面类型。

例如,我们return一个hello.html页面回来,只需要return “hello”,会自动拼接前后缀,即classpath:/templates/+hello+.html

@ConfigurationProperties(prefix = "spring.thymeleaf")
public class ThymeleafProperties {

	private static final Charset DEFAULT_ENCODING = Charset.forName("UTF-8");  //默认编码类型

	private static final MimeType DEFAULT_CONTENT_TYPE = MimeType.valueOf("text/html");

	public static final String DEFAULT_PREFIX = "classpath:/templates/";  //前缀

	public static final String DEFAULT_SUFFIX = ".html";  //后缀

导入名称空间

我们在编写html文件的时候,需要使用thymeleaf的语法才能取到对应的值,我们需要导入名称空间,否则没有语法提示

<!DOCTYPE html>
<!--导入名称空间-->
<html  xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <h1>hello</h1>

</body>
</html>

初窥thymeleaf

java文件

//@RestController
@Controller
@RequestMapping("/seller/order")
public class SellOrderController {
    @Autowired
    private OrderServiceImpl orderService;

    @GetMapping("/list")
    public ModelAndView list(Map<String,Object> map) {  //map默认会放在请求域中
        map.put("hello","我爱你");
        return "order/list";
    }
}

html

<!DOCTYPE html>
<!--导入名称空间-->
<html  xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

    <h1>hello</h1>
    <!--取出hello-->
    <div th:text="${hello}">这里是默认值哦</div>

</body>
</html>

我们通过设置th:text="${hello}"就可以将默认值进行修改

th:语法规则

上面我们介绍了使用th替换默认值,我们写的是text,也就是块块里面的东西,其实所有原生属性都可以替换,例如id、class等等,都可以先写一个默认值,再使用th来改变。

在官方文档,列举了哪些属性先解析,哪些属性后解析

thymeleaf学习笔记

标准表达式语法

  • 简单的表达式:

    • 获取变量表达式: ${…}

    • 选择变量表达式: *{…}

      • 与** ∗ ∗ 类 似 , 配 合 t h : o b j e c t = " {}**类似,配合th:object=" ∗∗类似,配合th:object="{session.user}",可以使用*替代上面的元素

      • <div th:object="${session.user}">
            <p>Name: <span th:text="*{firstName}">Sebastian</span>.</p>
            <p>Surname: <span th:text="*{lastName}">Pepper</span>.</p>
            <p>Nationality: <span th:text="*{nationality}">Saturn</span>.</p>
        </div>
        
    • 消息表达式: #{…}

    • 链接URL表达式: @{…}

      • @{/order/process(execId=${execId},execType='FAST')}
        
    • 片段表达式: ~{…}

  • 字面

    • 文本文字: ‘one text’‘Another one!’ ,…
    • 号码文字: 0343.012.3 ,…
    • 布尔文字: truefalse
    • null文本: null
    • 文字标记: onesometextmain ,…
  • 文本操作:

    • 字符串连接: +
    • 文字替换: |The name is ${name}|
  • 算术运算:

    • 二元运算符: +- , ***** , /%
    • 减号(一元运算符): -
  • 布尔操作:

    • 二元运算符: andor
    • 布尔否定(一元运算符): !not
  • 比较和平等:

    • 比较: ><>=<=gtltgele
      • 大于号、小于号在html里是特殊字符,我们可以使用括号内的东西替代
    • 平等运营商: ==!=eqne
  • 有条件的经营者:

    • 如果 - 则: (if) ? (then)
    • 如果 - 则 - 否则: (if) ? (then) : (else)
      • 三元运算符
    • 默认: (value) ?: (defaultvalue)
  • 特殊记号:

    • 无操作: _

所有这些特征可以被组合并嵌套:

'User is of type ' + (${user.isAdmin()} ? 'Administrator' : (${user.type} ?: 'Unknown'))

上一篇:SpringBoot---条件(th:if)


下一篇:html标签(4):ul,ol,li,table,tr,td,th