博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
认识Thymeleaf:简单表达式和标签 基础信息
阅读量:5045 次
发布时间:2019-06-12

本文共 4338 字,大约阅读时间需要 14 分钟。

转载:https://www.cnblogs.com/beyrl-blog/p/6633182.html

本文只适用于不会Java对HTML语言有基础的程序员们,是浏览了各大博客后收集整理,重新编辑的一篇文章,希望能对大家有所帮助。最后本文如果有哪里写错的,希望各位大神们能够批评指正,谢谢大家!

  对于Thymeleaf,网上特别官方的解释无非就是:网站或者独立应用程序的新式的服务端java模板引擎,可以执行HTML,XML,JavaScript,CSS甚至纯文本模板。这个解释没有任何问题,它确实是建立在Java的基础之上的,但是像我这种只会前端不懂Java的人,其实也可以运用它。了解angular的人在看到Thymeleaf就会感到惊喜,它们在形式上其实是比较相似的。那么,Thymeleaf需要从那里看起?作为Java小白,刚开始看了网上那么多Thymeleaf文章也看不出个所以然,今天好不容易才整理出头绪,接下来就开始切入正题:

noodles

  如上图,后台传出的food.name会将静态数据“noodles”替换掉,若访问静态页面,则显示数据“noodles”。是不是和angular很像?下面我们就来换一种方式,不同于其他博客上的方式来介绍Thymeleaf。

  当然,首先大家要先知道th简单表达式:

  一、th简单表达式:

      ①  ${...}  变量表达式:

    上述代码为引用user对象的name属性值。

    ② *{...}  选择表达式:

Nationality: XXXX.

     选择表达式一般跟在th:object后,直接选择object中的属性。

    ③ #{...}  消息文字表达式:

Welcome to our grocery store!

④ @{...}  链接url表达式:

    @{……}支持决定路径和相对路径。其中相对路径又支持跨上下文调用url和协议的引用(//code.jquery.com/jquery-2.0.3.min.js)。

   当URL为后台传出的参数时,代码如下:
披萨

  当理解了这四个表达式后,我就信心满满的去向下看文档,然后我发现我看不懂了。。。因为我不理解什么是th:field='';th:action='';诸如此类的好多好多,后来在一个博客上看到这一类的是所谓的Thymeleaf的属性,或者是常用的th:标签,下面我们就来整理学习一下这些标签:

    这是在一个博客上看到的整理的较全的图片,还有一个更全的,那个太多了,会吓到初学者,不知道你们会不会,反正我是被吓到了。。。

    

    下面我们会详细介绍一些常用的标签:

    二、th常用标签:

    1.th:id:

    类似html标签中的id属性。

 2.th:text:与th:utext:

    即文本显示,可对表达式或变量求值,并将结果显示在其被包含的HTML标签内,替换原有HTML文本。这里需要与th:utext:区分开,th:text:例子如下:

    若  restraunt.welcome=welcome to our <b>delicious</b>restaurant!  那么,用 <p h:text="#{restaurantt.welcome}"></p> 解析的结果为: welcome to our <b>delicious</b>restaurant! ,

也就是说,会输出 welcome to our &lt;b&gt;delicious&lt;/b&gt;restaurant</>  当然,我们是不会希望页面上出现&lt;和e&gt;的,这时候,我们就需要使用th:utext:来进行转义,即用 <p h:utext="#{restaurant.welcome}"></p>

所以最终输出的结果为:welcome to our delicious restaurant!

     3.th:object:

    用于表单数据对象绑定,将表单绑定到后台controller的一个JavaBean参数,常与th:field一起使用进行表单数据绑定。选择表达式一般跟在th:object后,直接取object中的属性。

      这里有一个需要注意的点:*{...}表达式的值是在选定的对象而不是整个context的map。也就是说,如果没有选定的对象,*{...}和${...}没有区别,请看下面的例子:

姓名:noodles

年龄:24

国籍:中国

    上面这段代码相当于:

姓名:noodles

 

年龄:24

国籍:中国

    4.th:field:上面提到了一个新标签,th:field:,常用于表单字段绑定。通常与th:object一起使用。 属性绑定、集合绑定。
    5.th:action:定义后台控制器路径,类似
标签的action属性。    6.th:href:定义超链接,类似
标签的href 属性。value形式为@{/logout}.复制代码
view
view
view复制代码     7.th:src:用于外部资源引入,类似于

th:if不光可以使用布尔值,以下规则都可以:

  • 如果值不为空:如果值为null,th:if将为false
    • 如果值为布尔型并且为true
    • 如果值为数值型并且不为0
    • 如果值为character并且不为0
    • 如果值为String,并且不为"false","off"和"no"
    • 如果值不为布尔型,数值型,character或String的任意类型

    ● 如果值为null,th:if将为false

     th:if还有一个互逆的表达式为th:unless,还继续用之前的例子作一个演示

查看    下面的是一个th:if 例子,大家可以照着套一下。复制代码
食物名称 食物价格 可现做 食客评价
醋溜土豆丝 2.41 yes 2个评价 查看

如果产品有评论,那么我们就创建一个跳转到评论页面的超链接,并且使用产品ID作为参数。

     10.th:switch 和th:case:选择语句。 th:case="*"表示default case

超级管理员用户

管理员用户

其他用户

    11.th:with:定义变量,th:with="isEven=${prodStat.count}%2 == 0",定义多个变量可以用逗号分隔。

The name of the first person is Julius Caesar.

当th:with被处理,firstPer变量创建一个局部变量和变量添加到map自上下文,以便它是用于评估和其他上下文中声明的变量从开始,但只有包含< div >标记的范围内。复制代码div th:with="firstPer=${persons[0]},secondPer=${persons[1]}">  

The name of the first person is Julius Caesar.

But the name of the second person is Marcus Antonius.

复制代码
th:with属性允许重用变量定义在相同的属性:
...

12.th:remove:移除除了第一个外的静态数据,用第一个tr标签进行循环迭代显示:

          //将后台传出的 productList 的集合进行迭代,用product参数接收,通过product访问属性值                            //用count进行统计,有顺序的显示            1                    Red Chair                    $123                    2014-12-01                                                    White table                    $200                    15-Jul-2013                                                    Reb table                    $200                    15-Jul-2013                                                    Blue table                    $200                    15-Jul-2013                      

 

转载于:https://www.cnblogs.com/lst619247/p/9889556.html

你可能感兴趣的文章
Android 自定义View并添加属性
查看>>
Xamarin Android教程Android基本知识版本介绍与系统介绍
查看>>
Xamarin.iOS项目提示error MSB3174:”TargetFrameworkVersion”的值无效
查看>>
记录:C++类内存分布(虚继承与虚函数)
查看>>
redhat 5下管理 rawdevices
查看>>
hdu 1671 字典树
查看>>
easyui 问题。
查看>>
【Linux】- Ubuntu安装nginx
查看>>
福大软工 · 第十次作业 - 项目测评(团队)
查看>>
使用@Aspect切面进行让JDBC自动关闭(Spring AOP)
查看>>
Python_list部分功能介绍
查看>>
JDBC工具类
查看>>
Ansible系列(四):playbook应用和roles自动化批量安装示例
查看>>
中国十大城市美女(经典套图)
查看>>
Unity3d与Android交互
查看>>
iOS:带主标题、副标题、图像类型的表格视图UITableView
查看>>
每天一道笔试题-2012年2月28日
查看>>
端口状态
查看>>
POJ:2976 Dropping tests(二分+最大化平均值)
查看>>
linux中断
查看>>