这次记一下thymleaf页面中#号和$号的作用。后来发现人家写的更清楚,感谢https://www.cnblogs.com/hjwublog/p/5051632.html          这位大神

后来还是写两句,加深自己映像。

${}是获取容器上下文变量的值,应该是包括所有上下文中的key-value。这里一直在想,所谓的应用上下文,容器,值栈都是用来存储key-value值,是不是其实都是一样的东西???(大神路过就指点一下吧!!!!)

*{}这个表达式,是获取指定的对象中的变量值。需要在前面指定对象,可以是集合中的某个对象,也可以是单独的一个对象。

#map 这个是thymeleaf的工具类,还有#dates#calendars#numbers #strings#objects#bools#arrays#lists#sets

#{}表达式与th:text一起使用,<label th:text="#{qq.qq}">label</label> 这时不会显示label,而是显示qq.qq变量的值。


@{}这个是thymeleaf中的链接,与th:src一起使用


文章主目录

 

 如需了解thymeleaf以及thymeleaf整合spring,请参考《Thymeleaf模板引擎使用》、《Thymeleaf 集成spring

 

${}

变量表达式(美元表达式,哈哈),用于访问容器上下文环境中的变量,功能同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: obj ect=" ${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,而标签内的文本将不会显示。

例如:

新建/WEB-INF/templates/home.html,段落

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

新建/WEB-INF/templates/home.propertieshome.welcome

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

测试结果:

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

 

@{}

超链接url表达式。

例如:

<script th:src="@{/resources/js/jquery/jquery.json-2.4.min.js}"

 

#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
复制代码

 



Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐