Thymeleaf 之 内置对象、定义变量、URL参数及标签自定义属性
2017-06-25 13:17
337 查看
如标题所述,这篇文章主要讲述Thymeleaf中的内置对象(list解析、日期格式化、数字格式化等)、定义变量、获取URL的参数和在页面标签中自定义属性的应用。
如果对Thymeleaf的基本使用、maven依赖等不清楚的可以先阅读我的另一篇文章《Thymeleaf 之 初步使用》。
Controller部份
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
在这个控制器的Model中存放了这样几个数据:一个String类型的列表、一个日期对象和一个数值,这些东西在实际应用开发过程中应用非常广泛,下面具体看一下在Thymeleaf中是如何解析这些数据的。
日期格式化
1
说明: 使用内置对象
需要注意的是:
· 内置对象一般都以
· 在使用内置对象是在对象名前都需要加
数字格式化
1
说明: 此示例表示保留两位小数位,整数位自动;
1
说明: 此示例表示保留两位小数位,3位整数位(不够的前加0)
获取列表长度
1
说明: 使用
获取URL参数值
1
说明: 当访问
定义变量
2
3
1
2
3
说明: 同样,当访问
自定义标签属性
在Thymeleaf中可以使用
1
变量情况是:
1
在Thymeleaf下则是:
1
说明: 在页面上查看源代码可以看到:
内置对象
上面简单描述了比较常用的
在Thymeleaf中的内置对象有:
示例代码:https://github.com/zsl131/thymeleaf-study/tree/master/study05
本文章来自【知识林】
如果对Thymeleaf的基本使用、maven依赖等不清楚的可以先阅读我的另一篇文章《Thymeleaf 之 初步使用》。
Controller部份
@Controller public class IndexController { @GetMapping(value = "index") public String index(Model model, HttpServletRequest request) { List<String> datas = new ArrayList<String>(); datas.add("知识林"); datas.add("http://www.zslin.com"); datas.add("393156105"); model.addAttribute("datas", datas); model.addAttribute("curDate", new Date()); model.addAttribute("money", Math.random()*100); return "index"; } }1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
在这个控制器的Model中存放了这样几个数据:一个String类型的列表、一个日期对象和一个数值,这些东西在实际应用开发过程中应用非常广泛,下面具体看一下在Thymeleaf中是如何解析这些数据的。
日期格式化
<span th:text="${#dates.format(curDate, 'yyyy-MM-dd HH:mm:ss')}"></span>1
1
说明: 使用内置对象
dates的
format函数即可对日期进行格式化,在
format函数中,第一个参数是日期对象,对二两个参数为日期格式(规则跟
SimpleDateFormat一样)
需要注意的是:
· 内置对象一般都以
s结尾,如
dates、
lists、
numbers等
· 在使用内置对象是在对象名前都需要加
#号。
数字格式化
<span th:text="${#numbers.formatDecimal(money, 0, 2)}"></span>1
1
说明: 此示例表示保留两位小数位,整数位自动;
<span th:text="${#numbers.formatDecimal(money, 3, 2)}"></span>1
1
说明: 此示例表示保留两位小数位,3位整数位(不够的前加0)
获取列表长度
<span th:text="${#lists.size(datas)}"></span>1
1
说明: 使用
#lists.size来获取List的长度。
获取URL参数值
<span th:text="${#httpServletRequest.getParameter('page')}"></span>1
1
说明: 当访问
http://localhost:1105/index?page=5时页面将会得到
page对应的值:
5。
定义变量
<div th:with="curPage=${#httpServletRequest.getParameter('page')}"> <h3>当前页码:<span th:text="${curPage}"></span></h3> </div>1
2
3
1
2
3
说明: 同样,当访问
http://localhost:1105/index?page=5时,页面将显示:
当前页码:5,说明用
th:with来定义变量,多个用
,号隔开,使用范围在当前标签内。
自定义标签属性
在Thymeleaf中可以使用
th:加上标签的任何属性进行赋值,但有些时候会遇到自定义的属性,再用
th:加自定义的属性则会无效。比如:需要对
<span>标签增加
objName和
objId这样的属性,在非Thymeleaf情况下是这样:
<span objId="1" objName="知识林"></span>1
1
变量情况是:
<span objId="${obj.id}" objName="${obj.name}"></span>1
1
在Thymeleaf下则是:
<span th:attr="myDate=${#dates.format(curDate, 'yyyy-mm-dd')}, myMoney=${money}"></span>1
1
说明: 在页面上查看源代码可以看到:
<span myMoney="91.6059494319957" myDate="2016-31-02"></span>,说明自定义属性用:
th:attr,多个属性用
,隔开。
内置对象
上面简单描述了比较常用的
dates、
lists、
numbers这几个内置对象,在Thymeleaf还有很多的内置对象,像
strings也非常常用,用法跟
Java.lang.String类的用法一样。
在Thymeleaf中的内置对象有:
#dates:日期格式化内置对象,具体方法可以参照
java.util.Date;
#calendars:类似于
#dates,但是是
java.util.Calendar类的方法;
#numbers: 数字格式化;
#strings:字符串格式化,具体方法可以参照
java.lang.String,如
startsWith、
contains等;
#objects:参照
java.lang.Object;
#bools:判断boolean类型的工具;
#arrays:数组操作的工具;
#lists:列表操作的工具,参照
java.util.List;
#sets:Set操作工具,参照
java.util.Set;
#maps:Map操作工具,参照
java.util.Map;
#aggregates:操作数组或集合的工具;
#messages:操作消息的工具。
示例代码:https://github.com/zsl131/thymeleaf-study/tree/master/study05
本文章来自【知识林】
相关文章推荐
- Thymeleaf 之 内置对象、定义变量、URL参数及标签自定义属性
- Thymeleaf 之 内置对象、定义变量、URL参数及标签自定义属性
- Thymeleaf 之 内置对象、定义变量、URL参数及标签自定义属性
- [FxCop.设计规则]13. 定义自定义属性参数的访问属性
- 给内置对象或自定义对象添加存取器属性(getter setter)的方法总结
- vue.js在标签属性中插入变量参数的方法
- 用类名当做参数类型,定义属性变量。
- GridView的HyperLinkField的DataNavigateUrlFormatString如何使用自定义的变量,而不是数据库绑定的值.报错:指定的参数已超出有效值的范围。参数名: index
- 前端一道面试题,考察变量定义提升、this指针指向、运算符优先级、原型、继承、全局变量污染、对象属性及原型属性优先级
- 遍历json对象的属性和值,并循环动态定义声明变量
- vue.js如何在标签属性中插入变量参数
- struts.xml文件中 result标签的 type 属性为redirectAction时URL参数与值的获得
- [Shell]Bash变量:自定义变量 & 环境变量 & 位置参数变量 & 预定义变量
- location对象,将url解析为独立片段search属性截取传递的参数
- Thymeleaf 3.0 自定义标签方言属性,简单实例。快速学习!
- 处理模型——通过定义一个自定义的TypeWriter和TypeReader将多个对象存储在Tag属性中
- 给内置对象或自定义对象添加存取器属性(在兼容性上会比较有用)
- 在 JavaScript 核心语言中,全局对象的预定义属性都是不可枚举的,所有可以用 for/in 循环列出所有隐式或显式声明的全局变量
- Web小结---Servlet,JSP,过滤器和监听器,四个作用域和九个内置对象,EL表达式语言,自定义标签,JSTL,国际化与汉字的编码