如需了解Thymeleaf以及Thymeleaf整合Spring Boot,请参考《Spring boot 之 Web应用开发篇》、《Spring Boot 之 Thymeleaf 篇》。

Thymeleaf的基本表达式有:

${...} 变量表达式

*{...} 选择变量表达式

#{...} 消息表达式

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

#maps 工具对象表达式


${}变量表达式

用于访问容器上下文环境中的变量,功能同jstl中${}。

protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

    ...

    //Create Servlet context

    WebContext ctx = new WebContext(req, resp, this.getServletContext(), req.getLocale());

    ctx.setVariable("helloword","hello thymeleaf,wellcome!");

    //Executing template engine

    templateEngine.process("home", ctx, resp.getWriter());

}

在模板的页面访问变量:

<p><span th:text="${helloword}"></span></p>

*{}选择表达式

选择表达式与变量表达式有一个重要的区别:选择表达式计算的是选定的对象,而不是整个环境变量映射。也就是:只要是没有选择的对象,选择表达式与变量表达式的语法是完全一样的。那什么是选择的对象呢?是一个:th:object对象属性绑定的对象。

如:

<div th:object="${session.user}" >

    <p>Name: <span th:text=" *{firstName}" >Sebastian</span>. </p>

    <p>Surname: <span th:text=" *{lastName}" >Pepper</span>. </p>

    <p>Nationality: <span th:text=" *{nationality}" >Saturn</span>. </p>

</div>

在上面这个例中,选择表达式选择的是th:object对象属性绑定的session. user对象中的属性。

#{}消息表达式(资源表达式)

通常与th:text属性一起使用,指明声明了th:text的标签的文本是#{}中的key所对应的value,而标签内的文本将不会显示。

模板文件index.html中,有如下代码:

<p th:text=" #{page.welcome}" >This text will not be show! </p>

在项目的templates中有messages.properties,在该配置文件中有page.welcome:

home.welcome=this messages is from home.properties!

运行项目,模板页面在浏览器中的效果:

从测试结果可以看出,消息表达式通常用于显示页面静态文本,将静态文本维护在properties文件中也方面维护。这个通常用来做国际化等。

@{}超链接url表达式

如:

<!-- MAIN CSS -->
<link rel="stylesheet" th:href="@{/front/css/menu.css}" href="../../../static/front/css/menu.css">
<link rel="stylesheet" th:href="@{/front/css/main.css}" href="../../../static/front/css/main.css">
<!--JS-->
<script th:src="@{/includes/jquery/GVerify.js}"></script>

#maps工具对象表达式:

常用于日期、集合、数组对象的访问。这些工具对象就像是java对象,可以访问对应java对象的方法来进行各种操作。

<div th:if="${#maps.size(stuReqBean.students[__${rowStat.index}__].score) != 0}">

    <label>${score.key}:</label><input type="text" th:value="${score.value}"></input>

</div>

<div th:if="${#maps.isEmpty(stuReqBean.students[__${rowStat.index}__].score)}">

    ...do something...

</div>

其他工具对象表达式还有:

#dates

#calendars

#numbers 

#strings

#objects

#bools

#arrays

#lists

#sets

 

更多详细表达式请访问 http://www.thymeleaf.org/doc/tutorials/3.0/usingthymeleaf.html#appendix-b-expression-utility-objects  或 http://www.thymeleaf.org/

标签: Thymeleaf, thymeleaf 基本表达式, Spring Boot模板引擎

仅有一条评论

  1. 趣头条

    鸟儿叫,花儿笑,一年一季春来到!

添加新评论