Thymeleaf内置对象与工具类【详解版】

文章详细介绍了Thymeleaf3.0的七大内置对象,如#ctx、#param、#locale等,以及如何在模板中使用它们来获取请求、会话和应用级别的数据。同时,文章还探讨了Thymeleaf的工具类,如#dates用于日期格式化,#lists和#strings提供的各种实用方法。通过示例代码展示了如何在实际开发中利用这些工具类进行操作。

一、内置对象


官方文档: Thymeleaf 3.0 基础对象

七大基础对象:

  • ${#ctx} 上下文对象,可用于获取其它内置对象。

  • ${#param}: 上下文参数变量。

  • ${#locale}:上下文区域语言设置对象。

  • ${#request}: HttpServletRequest对象。

  • ${#response}: HttpServletResponse对象。

  • ${#session}: HttpSession对象。

  • ${#servletContext}: ServletContext对象。

用法示例

为了演示数据,我们在后端向thymeleaf模板传参的时候,使用不同的对象容器。并注意下图中的参数名称:name1、name2、name3、name4。

上图所示对应的代码:

@GetMapping("/thymeleaf")
public String index(@RequestParam String name1,
                    HttpServletRequest request,
                    Model model){

    List<ArticleVO> articles = articleService.getAll();

    request.setAttribute("name2","curry");
    request.getSession().setAttribute("name3","james");
    request.getServletContext().setAttribute("name4","jordan");

    model.addAttribute("articles", articles);//模版名称,实际的目录为:resources/templates/thymeleaftemp.htmlreturn"thymeleaftemp";}

在thymeleaf模板模板中接收参数

<h1>ThymeLeaf内置对象</h1><br/>语言国家:    <span th:text="${#locale.getLanguage() + '_' + #locale.getCountry()}"></span><br/>param:     <span th:text="${param.name1}"></span><br/>request:    <span th:text="${name2}"></span><br/>session:   <span th:text="${session.name3}"></span><br/>application:<span th:text="${application.name4}"></span><br/>session包含name3属性么(如不包含显示zoo):<span th:text="${session.name3}?:('zoo')"></span><br/>session包含属性数量:<span th:text="${session.size()}"></span><br/>session是空的么:<span th:text="${session.isEmpty()}"></span>

访问:http://localhost:8888/template/thymeleaf?name1=zimug , 注意URL中的name1参数,浏览器数据的显示效果如下:

二、 常用的工具类:


官方文档: Thymeleaf 3.0 工具类
  • #strings:字符串工具类

  • #lists:List 工具类

  • #arrays:数组工具类

  • #sets:Set 工具类

  • #maps:常用Map方法。

  • #objects:一般对象类,通常用来判断非空

  • #bools:常用的布尔方法。

  • #execInfo:获取页面模板的处理信息。

  • #messages:在变量表达式中获取外部消息的方法,与使用#{...}语法获取的方法相同。

  • #uris:转义部分URL / URI的方法。

  • #conversions:用于执行已配置的转换服务的方法。

  • #dates:时间操作和时间格式化等。

  • #calendars:用于更复杂时间的格式化。

  • #numbers:格式化数字对象的方法。

  • #aggregates:在数组或集合上创建聚合的方法。

  • #ids:处理可能重复的id属性的方法。

用法举例:

date工具类之日期格式化

使用默认的日期格式(toString方法) 并不是我们预期的格式:Mon Dec 03 23:16:50 CST 2018

此时可以通过时间工具类#dates来对日期进行格式化:2018-12-03 23:16:50

<td th:text="${#dates.format(item.createTime,'yyyy-MM-dd HH:mm:ss')}"></td>

首字母大写

${#strings.capitalizeWords(str)}

list方法

/*
 * 计算list集合中元素数量
 */
${#lists.size(list)}/*
 * 检查集合是否是空的
 */
${#lists.isEmpty(list)}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

枫叶(接毕设)QQ:3042127848

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

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

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

打赏作者

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

抵扣说明:

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

余额充值