springboot入门系列教程|第三篇:thymeleaf使用详解之标准表达式

前言

     上一篇我们讲解了springboot如何结合thymeleaf,并且解释了static和templates文件夹的区别,以及介绍了thymeleaf如何解决html5的强校验问题,那么这篇我们就要上一篇我们讲解了springboot如何结合thymeleaf,并且解释了static和templates文件夹的区别,以及介绍了thymeleaf如何解决html5的强校验问题,那么接下来几篇我们就要来讲下thymeleaf的详细用法。

环境

jdk1.8
maven 3.3.9
IDEA 

thymeleaf标准表达式

  • 标准变量表达式

     语法:

语法:${}

     后端代码:

  @RequestMapping(value = "/index",method = RequestMethod.GET)
    public String index(Model model){
        Person person = new Person() ;
        person.setAge(22);
        person.setName("tom");
        person.setWxCode("coldStone");
        model.addAttribute("person", person);
        return "index";
    }

     前端代码:

<p>
年龄:<span th:text="${person.age}"></span></br>
姓名:<span th:text="${person.name}"></span></br>
微信公众号:<span th:text="${person.wxCode}"></span>
</p>

     访问显示:

这里写图片描述


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

     后端代码:

 @RequestMapping(value = "/index",method = RequestMethod.GET)
    public String index(Model model){
        Person person = new Person() ;
        person.setAge(22);
        person.setName("xxx");
        person.setWxCode("coldStone");
        model.addAttribute("person", person);
        return "index";
    }

     前端代码:

<p th:object="${person}">
    年龄:<span th:text="*{age}"></span></br>
    姓名:<span th:text="*{name}"></span></br>
    微信公众号:<span th:text="*{wxCode}"></span>
</p>

     说明:

选择表达式使用th:object来绑定后台传来的User对象(通过标准变量表达式),
然后使用 * 来代表这个对象,后面 {} 中的值是此对象中的属性;

     或者直接使用*表达式,两种方式都可以:

<p >
    年龄:<span th:text="*{person.age}"></span></br>
    姓名:<span th:text="*{person.name}"></span></br>
    微信公众号:<span th:text="*{person.wxCode}"></span>
</p>

这里写图片描述

  • URL表达式
    语法:
@{}

     后端代码:

  @RequestMapping(value = "/index",method = RequestMethod.GET)
    public String index(Model model){
        Person person = new Person() ;
        person.setAge(22);
        person.setName("xxx");
        person.setWxCode("coldStone");
        model.addAttribute("person", person);
        return "index";
    }

     前端代码:

<a href="personInfo.html" 
th:href="@{'http://localhost:8080/coderV/person/info?wxCode='+${person.wxCode}}">
我的微信公众号是:coldStone</a>

这里写图片描述
引出一个问题:假如我要显示的字符串很多,难道我还要像上面前端代码一个个的拼接吗?并不是,我们有语法可以来解决字符串的拼接问题:

<a href="personInfo.html" 
th:href="@{'http://localhost:8080/coderV/person/info?wxCode='+${person.wxCode}+'&name='+${person.name}}">
我的微信公众号是:coldStone</a>

     这段代码看上去是不是特别长,我也就拼了两个而已,我们来看下使用thmeleaf简化后的,注意|…|里面只可以包含变量表达式,不能包含文本字面量’…’,所以下面|…|里面的地址不需要引号

<a href="personInfo.html" th:href="@{|http://localhost:8080/coderV/person/info?wxCode=${person.wxCode}&name=${person.name}|}">我的微信公众号是:coldStone</a>

     很明显这两种结果打印一模一样,但是使用||却更加的简单:
这里写图片描述
     接下来我们来讲解下相对URL:
     第一种相对于页面的URL:

<a href="index.html" th:href="@{'person?wxCode='+${person.wxCode}}">我的微信公众号是:coldStone</a></body></br>

     第二种相对于上下文的URL,就多加了一个/:

<a href="index.html" th:href="@{'/person?wxCode='+${person.wxCode}}">我的微信公众号是:coldStone</a>

     结果,发现加/的多了项目上下文/coderV:

<a href="person?wxCode=coldStone">我的微信公众号是:coldStone</a></body></br>
<a href="/coderV/person?wxCode=coldStone">我的微信公众号是:coldStone</a>

     上一篇:springboot 结合thymeleaf 模板引擎初探

     下一篇:springboot入门系列教程|第四篇:thymeleaf使用详解之常见属性以及常用字面量

     获取本章源码:github地址


如果有小伙伴觉得我写的不错的话可以关注一下我的博客,我会一直持续更新,也可以支持一下我的公众号哦:java架构师小密圈,会分享架构师所必须深入研究的技术,比如netty,分布式,性能优化,spring源码分析,mybatis源码分析,等等等,同时还会分享一些赚钱理财的小套路哦,欢迎大家来支持,一起学习成长,程序员不仅仅是搬瓦工!
公众号:分享系列好文章
java架构师小密圈

交流群:群友互相分享资料
java架构师小密圈

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

mindcarver

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值