Thymeleaf 快速入门(2)简单表达式
2018-02-01 23:51
78 查看
2.1.1变量表达式:${…}
模板名称:var.html 原理类似OGNL/SpringEL表达式
e.g.
附:① Expression Basic Objects (表达式基本对象)
当对上下文变量评估OGNL表达式时,某些对象可用于表达式以获得更高的灵活性。这些对象将被引用(按照OGNL标准),从#符号开始:
#ctx:上下文对象。
#vars: 上下文变量。
#locale:上下文区域设置。
#request:(仅在Web上下文中)HttpServletRequest对象。
#response:(仅在Web上下文中)HttpServletResponse对象
#session:(仅在Web上下文中)HttpSession对象。
#servletContext:(仅在Web上下文中)ServletContext对象。
示例:
除了这些基本的对象之外,Thymeleaf将为我们提供一组实用对象,这些对象将帮助我们在表达式中执行常见任务。
#execInfo:有关正在处理的模板的信息。
#messages:在变量表达式中获取外部化消息的方法,与使用#{…}语法获得的方式相同。
#uris:转义URL / URI部分的方法
#conversions:执行配置的转换服务(如果有)的方法。
#dates:java.util.Date对象的方法:格式化,组件提取等
#calendars:类似于#dates但是java.util.Calendar对象
#numbers:用于格式化数字对象的方法。
#strings:String对象的方法:contains,startsWith,prepending / appending等
#objects:一般对象的方法。
#bools:布尔评估的方法。
#arrays:数组方法。
#lists:列表的方法。
#sets:集合的方法。
#maps:地图方法。
#aggregates:在数组或集合上创建聚合的方法。
4000
#ids:处理可能重复的id属性的方法(例如,作为迭代的结果)。
2.1.2选择性/星号表达式:*{…}
不仅可以将变量表达式写为${…},也可以写为*{…}。
有一个重要的区别:星号语法评估所选对象而不是整个上下文的表达式。也就是说,只要没有选定的对象,美元和星号语法就会完全相同。
模板名称:star.html
equals.
2.1.3 消息表达式:#{…}
模板名称:message.html message 国际化支持 语法格式:#{ }
e.g.
2.1.4 链接表达式:@{…}
模板名称:link.html
语法格式:@{ }
示例:
下面针对不同类型网址做一详细介绍
2.1.5 片段表达式:~{…}
片段表达式的语法是非常简单的。有三种不同的格式:
“~{templatename::selector}”包含在命名的模板上应用指定的标记选择器导致的片段templatename。请注意,selector可以只是一个片段名称,所以你可以指定~{templatename::fragmentname}像~{footer :: copy}上面那样简单的东西。
标记选择器语法由底层的AttoParser解析库定义,类似于XPath表达式或CSS选择器。
“~{templatename}” 包括完整的模板命名templatename。
请注意,您在th:insert/ th:replacetags中使用的模板名称必须由Template Engine当前使用的Template Resolver解析。
~{::selector}”或”~{this::selector}”包含同一模板的片段。
双方templatename并selector在上面的例子可以是全功能的表达式(甚至条件语句!),如:
片段可以包括任何th:*属性。一旦片段被包含在目标模板(具有th:insert/ th:replaceattribute)的模板中,这些属性将被评估,并且它们将能够引用此目标模板中定义的任何上下文变量。
这种分片方法的一大优点是,您可以将页面中的片段写入浏览器完美显示的页面,并具有完整而有效的标记结构,同时仍保留使Thymeleaf包含在其他模板中的功能。
模板名称:var.html 原理类似OGNL/SpringEL表达式
e.g.
1. Established locale country: <span th:text="${#locale.country}">US</span> 2. <p> Today is: <span th:text="${#calendars.format(today,'dd MMMM yyyy')}">13 May 2011</span></p>
附:① Expression Basic Objects (表达式基本对象)
当对上下文变量评估OGNL表达式时,某些对象可用于表达式以获得更高的灵活性。这些对象将被引用(按照OGNL标准),从#符号开始:
#ctx:上下文对象。
#vars: 上下文变量。
#locale:上下文区域设置。
#request:(仅在Web上下文中)HttpServletRequest对象。
#response:(仅在Web上下文中)HttpServletResponse对象
#session:(仅在Web上下文中)HttpSession对象。
#servletContext:(仅在Web上下文中)ServletContext对象。
示例:
Established locale country: <span th:text="${#locale.country}">US</span>
② Expression Utility Objects(表达式实用对象)
除了这些基本的对象之外,Thymeleaf将为我们提供一组实用对象,这些对象将帮助我们在表达式中执行常见任务。
#execInfo:有关正在处理的模板的信息。
#messages:在变量表达式中获取外部化消息的方法,与使用#{…}语法获得的方式相同。
#uris:转义URL / URI部分的方法
#conversions:执行配置的转换服务(如果有)的方法。
#dates:java.util.Date对象的方法:格式化,组件提取等
#calendars:类似于#dates但是java.util.Calendar对象
#numbers:用于格式化数字对象的方法。
#strings:String对象的方法:contains,startsWith,prepending / appending等
#objects:一般对象的方法。
#bools:布尔评估的方法。
#arrays:数组方法。
#lists:列表的方法。
#sets:集合的方法。
#maps:地图方法。
#aggregates:在数组或集合上创建聚合的方法。
4000
#ids:处理可能重复的id属性的方法(例如,作为迭代的结果)。
2.1.2选择性/星号表达式:*{…}
不仅可以将变量表达式写为${…},也可以写为*{…}。
有一个重要的区别:星号语法评估所选对象而不是整个上下文的表达式。也就是说,只要没有选定的对象,美元和星号语法就会完全相同。
模板名称:star.html
<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>
equals.
<div> <p>Name: <span th:text="${session.user.firstName}">Sebastian</span>.</p> <p>Surname: <span th:text="${session.user.lastName}">Pepper</span>.</p> <p>Nationality: <span th:text="${session.user.nationality}">Saturn</span>.</p> </div>
2.1.3 消息表达式:#{…}
模板名称:message.html message 国际化支持 语法格式:#{ }
e.g.
<p th:utext="#{home.welcome}">Welcome to our grocery store!</p>
2.1.4 链接表达式:@{…}
模板名称:link.html
语法格式:@{ }
示例:
<!-- Will produce 'http://localhost:8080/gtvg/order/details?orderId=3' (plus rewriting) --> <a href="details.html" th:href="@{http://localhost:8080/gtvg/order/details(orderId=${o.id})}">view</a> <!-- Will produce '/gtvg/order/details?orderId=3' (plus rewriting) --> <a href="details.html" th:href="@{/order/details(orderId=${o.id})}">view</a> <!-- Will produce '/gtvg/order/3/details' (plus rewriting) --> <a href="details.html" th:href="@{/order/{orderId}/details(orderId=${o.id})}">view</a>
下面针对不同类型网址做一详细介绍
①.绝对URL(Absolute URLs) 开始通过指定协议名称(包含http://或https://开头) e.g. <a th:href="@{http://www.thymeleaf/documentation.html}"></a> equals: <a href="http://www.thymeleaf/documentation.html"></a> ②. 上下文相关的URL(Context-relative URLs) 最常用的如应用程序myapp的访问地址:http://localhost:8080/myapp,那么myapp就是上下文名称。 e.g.<a th:href="@{/order/list}"></a> equals:<a href="/myapp/order/list"></a> 说明:“/”表示从应用程序根路径开始访问 ,去掉“/”表示相对路径 ③.相对于服务器的URL(Server-relative URLs) 用法类似2,连接到同一服务器不同应用程序中 e.g. <a th:href="@{~/billing-app/showDetails.htm}"></a> equals: <a href="/billing-app/showDetails.htm"></a> note:当前应用程序的上下文myapp将被忽略 ④.协议相对URL(Protocol-relative URLs) 通常用于,包括外部资源,如样式,脚本等。保证协议(HTTP,HTTPS)用于显示当前页面的绝对URL。 e.g. <script th:src="@{//scriptserver.example.net/myscript.js}">...</script> equals: <script src="//scriptserver.example.net/myscript.js">...</script> ⑤.带参数的URL表达式 e.g. 1.<a th:href="@{/order/details(id=3)}"></a> equals: <a href="/order/details?id=3"></a> 2.携带多参数:<a th:href="@{/order/details(id=3,action='show_all')}"></a> equals: <a href="/order/details?id=3&action=show_all"></a>
2.1.5 片段表达式:~{…}
片段表达式的语法是非常简单的。有三种不同的格式:
“~{templatename::selector}”包含在命名的模板上应用指定的标记选择器导致的片段templatename。请注意,selector可以只是一个片段名称,所以你可以指定~{templatename::fragmentname}像~{footer :: copy}上面那样简单的东西。
标记选择器语法由底层的AttoParser解析库定义,类似于XPath表达式或CSS选择器。
“~{templatename}” 包括完整的模板命名templatename。
请注意,您在th:insert/ th:replacetags中使用的模板名称必须由Template Engine当前使用的Template Resolver解析。
~{::selector}”或”~{this::selector}”包含同一模板的片段。
双方templatename并selector在上面的例子可以是全功能的表达式(甚至条件语句!),如:
<div th:insert="footer :: (${user.isAdmin}? #{footer.admin} : #{footer.normaluser})"></div>
片段可以包括任何th:*属性。一旦片段被包含在目标模板(具有th:insert/ th:replaceattribute)的模板中,这些属性将被评估,并且它们将能够引用此目标模板中定义的任何上下文变量。
这种分片方法的一大优点是,您可以将页面中的片段写入浏览器完美显示的页面,并具有完整而有效的标记结构,同时仍保留使Thymeleaf包含在其他模板中的功能。
相关文章推荐
- 简单入门正则表达式 - 第三章 快速入门
- GitHub快速入门简单教程以及常用Git 命令
- ajax的简单应用之快速入门
- Linq快速入门——Lambda表达式的前世今生
- Logstash学习2_logstash简单介绍和快速入门
- 第一章 快速入门 编写简单的C++程序
- Maven入门指南① :Maven 快速入门及简单使用
- php-laravel4.0框架 简单快速入门
- Unity 2D游戏开发快速入门第1章创建一个简单的2D游戏
- AngularJS快速入门指南03:表达式
- RPC学习----Thrift快速入门和Java简单示例
- Flex 3快速入门: 构建简单的用户界面 设置组件的样式
- 菜鸟快速入门 struts 1.X (简单的登陆)第一篇
- 30分钟zabbix入门——最简单有效的zabbix快速学习法
- python3爬虫之入门和正则表达式,获取IP地址, 隐马尔可夫模型及其在分词中的简单应用
- Maven入门指南① :Maven 快速入门及简单使用
- Flex 3快速入门: 构建简单的用户界面 使用工具提示
- 正则表达式快速入门
- 简单入门正则表达式 - 第十章 正则表达式综合应用举例
- 正则表达式快速入门