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

简介: Thymeleaf 3.0 提供了七大内置对象,包括${#ctx}(上下文对象)、${#param}(参数变量)、${#locale}(区域语言设置)、${#request}(HttpServletRequest)、${#response}(HttpServletResponse)、${#session}(HttpSession)和${#servletContext}(ServletContext)。示例代码展示了如何在后端传递不同对象容器中的参数到Thymeleaf模板。

一、内置对象

   官方文档: 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)}


相关文章
|
2月前
|
XML 前端开发 Java
Spring Boot的Web开发之Thymeleaf模板引擎的解析及使用(Thymeleaf的基础语法以及常用属性)
Spring Boot的Web开发之Thymeleaf模板引擎的解析及使用(Thymeleaf的基础语法以及常用属性)
82 0
|
8月前
|
前端开发
Thymeleaf几个内置对象
Thymeleaf几个内置对象
|
Java
Java:SpringBoot 整合 Freemarker模板引擎渲染html
Java:SpringBoot 整合 Freemarker模板引擎渲染html
250 0
Java:SpringBoot 整合 Freemarker模板引擎渲染html
|
前端开发 Java
传统SpringMvc+JSP与SpringMvc+Freemarker的异同
也许都会有个这样的疑问,Freemarker确实可以做很多页面的事情,比如说一些页面逻辑,if else list,等等。可是实在是看不出他比jsp功能多出什么,或者说简化了什么。比如说页面显示逻辑,jsp的EL同样可以做到,而且感觉语法也差不多,也没有麻烦什么,再比如说$语法,el也有啊。真不明白它那里比jsp好了。还有如果用ftl模板文件,那么美工怎么去做?只有把生成的页面保存下来然后再设计css。分工是做到了,可是协调的问题有出现可以做很多页面的事情,比如说一些页面逻辑,if else list。
82 0
传统SpringMvc+JSP与SpringMvc+Freemarker的异同
springMvc36-JavaEE-JSP基础-EL表达式和JSTL标签库(Taglibs)
springMvc36-JavaEE-JSP基础-EL表达式和JSTL标签库(Taglibs)
83 0
Java:thymeleaf模板引擎
Java:thymeleaf模板引擎
|
设计模式 存储 Java
JSP第三篇【JavaBean的介绍、JSP的行为--JavaBean】(一)
JavaBean就是一个普通的java类,也称之为简单java对象--POJO(Plain Ordinary Java Object),是Java程序设计中一种设计模式,是一种基于 Java 平台的软件组件思想 JavaBean遵循着特定的写法,通常有以下的规则: 有无参的构造函数 成员属性私有化 封装的属性如果需要被外所操作,必须编写public类型的setter、getter方法 上面的文字看起来好像很高大上,javaBean其实非常简单,下面的代码就是按照特定写法、规则编写的一个JavaBean对象
162 0
JSP第三篇【JavaBean的介绍、JSP的行为--JavaBean】(一)
|
存储 设计模式 Java
JSP第三篇【JavaBean的介绍、JSP的行为--JavaBean】(二)
JavaBean就是一个普通的java类,也称之为简单java对象--POJO(Plain Ordinary Java Object),是Java程序设计中一种设计模式,是一种基于 Java 平台的软件组件思想 JavaBean遵循着特定的写法,通常有以下的规则: 有无参的构造函数 成员属性私有化 封装的属性如果需要被外所操作,必须编写public类型的setter、getter方法 上面的文字看起来好像很高大上,javaBean其实非常简单,下面的代码就是按照特定写法、规则编写的一个JavaBean对象
104 0
JSP第三篇【JavaBean的介绍、JSP的行为--JavaBean】(二)