SpringBoot系列教材 (三十一)- Thymeleaf - thymeleaf 如何用th:if做条件判断

步骤1:基于上一个知识点改进
步骤2:先运行,看到效果,再学习
步骤3:模仿和排错
步骤4:TestController
步骤5:test.html
步骤6:关于真假判断
步骤7:重启测试

步骤 1 : 基于上一个知识点改进

本知识点是建立在上一个知识点可运行项目的基础上进行的改进,所以最好把上个知识点理解和消化了.

步骤 2 : 先运行,看到效果,再学习

老规矩,先下载下载区(点击进入)的可运行项目,配置运行起来,确认可用之后,再学习做了哪些步骤以达到这样的效果。
运行 Application.java, 然后访问地址:

http://127.0.0.1:8080/thymeleaf/test


即可看到如图所示的效果。

先运行,看到效果,再学习

步骤 3 : 模仿和排错

在确保可运行项目能够正确无误地运行之后,再严格照着教程的步骤,对代码模仿一遍。
模仿过程难免代码有出入,导致无法得到期望的运行结果,此时此刻通过比较正确答案 ( 可运行项目 ) 和自己的代码,来定位问题所在。
采用这种方式,学习有效果,排错有效率,可以较为明显地提升学习速度,跨过学习路上的各个槛。

推荐使用diffmerge软件,进行文件夹比较。把你自己做的项目文件夹,和我的可运行项目文件夹进行比较。
这个软件很牛逼的,可以知道文件夹里哪两个文件不对,并且很明显地标记出来
这里提供了绿色安装和使用教程:diffmerge 下载和使用教程

步骤 4 : TestController

增加一个布尔值数据,并且放在model中便于视图上获取

package com.how2java.springboot.web;

import java.util.ArrayList;

import java.util.Date;

import java.util.List;

import org.springframework.stereotype.Controller;

import org.springframework.ui.Model;

import org.springframework.web.bind.annotation.RequestMapping;

import com.how2java.springboot.pojo.Product;

  

@Controller

public class TestController {

  

    @RequestMapping("/test")

    public String test(Model m) {

        String htmlContent = "<p style='color:red'> 红色文字</p>";

        Product currentProduct =new Product(5,"product e"200);

        boolean testBoolean = true;

         

        m.addAttribute("htmlContent", htmlContent);

        m.addAttribute("currentProduct", currentProduct);

        m.addAttribute("testBoolean", testBoolean);

         

        return "test";

    }

}

步骤 5 : test.html

Thymeleaf 的条件判断是 通过 th:if 来做的,只有为真的时候,才会显示当前元素

<p th:if="${testBoolean}" >如果testBoolean 是 true ,本句话就会显示</p>



取反可以用not, 或者用th:unless.

<p th:if="${not testBoolean}" >取反 ,所以如果testBoolean 是 true ,本句话就不会显示</p>

<p th:unless="${testBoolean}" >unless 等同于上一句,所以如果testBoolean 是 true ,本句话就不会显示</p>



除此之外,三元表达式也比较常见

<p th:text="${testBoolean}?'当testBoolean为真的时候,显示本句话,这是用三相表达式做的':''" ></p>

<!DOCTYPE HTML>

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

<head>

    <title>hello</title>

    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

    <link rel="stylesheet" type="text/css" media="all" href="../../webapp/static/css/style.css" th:href="@{/static/css/style.css}"/>

    <script type="text/javascript" src="../../webapp/static/js/thymeleaf.js" th:src="@{/static/js/thymeleaf.js}"></script>

     

    <style>

        h2{

            text-decoration: underline;

            font-size:0.9em;

            color:gray;

        }

    </style>       

</head>

<body>

<div class="showing">

    <h2>条件判断</h2>

    <p th:if="${testBoolean}" >如果testBoolean 是 true ,本句话就会显示</p>

    <p th:if="${not testBoolean}" >取反 ,所以如果testBoolean 是 true ,本句话就不会显示</p>

    <p th:unless="${testBoolean}" >unless 等同于上一句,所以如果testBoolean 是 true ,本句话就不会显示</p>

    <p th:text="${testBoolean}?'当testBoolean为真的时候,显示本句话,这是用三相表达式做的':''" ></p>

</div>

<div class="showing">

    <h2>显示 转义和非转义的 html 文本</h2>

    <p th:text="${htmlContent}" ></p>

    <p th:utext="${htmlContent}" ></p>

</div>

<div class="showing">

    <h2>显示对象以及对象属性</h2>

    <p th:text="${currentProduct}" ></p>

    <p th:text="${currentProduct.name}" ></p>

    <p th:text="${currentProduct.getName()}" ></p>

</div>

<div class="showing" th:object="${currentProduct}">

    <h2>*{}方式显示属性</h2>

    <p th:text="*{name}" ></p>

</div>

<div class="showing">

    <h2>算数运算</h2>

    <p th:text="${currentProduct.price+999}" ></p>

</div>

<div class="showing">

    <div th:replace="include::footer1" ></div>

    <div th:replace="include::footer2(2015,2018)" ></div>

</div>

</body>

</html>

步骤 6 : 关于真假判断

不只是布尔值的 true 和 false, th:if 表达式返回其他值时也会被认为是 true 或 false,规则如下:

boolean 类型并且值是 true, 返回 true
数值类型并且值不是 0, 返回 true
字符类型(Char)并且值不是 0, 返回 true
String 类型并且值不是 "false", "off", "no", 返回 true
不是 boolean, 数值, 字符, String 的其他类型, 返回 true

值是 null, 返回 false

步骤 7 : 重启测试

重新启动Application.java, 然后访问如下地址测试:

http://127.0.0.1:8080/thymeleaf/test


更多内容,点击了解: https://how2j.cn/k/springboot/springboot-if/1739.html

  • 9
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值