可能是最全的Thymeleaf参考手册(九):局部变量

 

​Thymeleaf将局部变量称为为模板的特定片段定义的变量,并且仅可用于该片段内部的评估。

我们已经看到的示例是商品产品列表页面中的迭代变量:

<tr th:each="prod : ${prods}">
    ...
</tr>

 

prod 变量仅在 <tr> 标记范围内可用。特别的:

  • th:* 标签可用于在该标签中执行的所有其它属性,该属性的优先级低于 th:each(这意味着它们将在 th:each 之后执行)。

  • 它将可用于 <tr> 标签的任何子元素,例如任何 <td> 元素。

 

Thymeleaf提供了一种使用 th:with 属性声明局部变量而无需迭代的方法,其语法类似于属性值分配的语法:

<div th:with="firstPer=${persons[0]}">
  <p>
    The name of the first person is <span th:text="${firstPer.name}">Julius Caesar</span>.
  </p>
</div>

 

当 th:with 被处理时, firstPer 变量被创建为一个局部变量,并加入到上下文变量映射中,使得它可用于与在上下文中声明的任何其它变量一起评估,但仅在 <div> 标记内有效 。

可以使用通常的多重赋值语法同时定义几个变量:

<div th:with="firstPer=${persons[0]},secondPer=${persons[1]}">
  <p>
    The name of the first person is <span th:text="${firstPer.name}">Julius Caesar</span>.
  </p>
  <p>
    But the name of the second person is 
    <span th:text="${secondPer.name}">Marcus Antonius</span>.
  </p>
</div>

 

 th:with 属性允许重用在同一属性中定义的变量:

<div th:with="company=${user.company + ' Co.'},account=${accounts[company]}">...</div>

使用一下:

<p>
  Today is: 
  <span th:text="${#calendars.format(today,'dd MMMM yyyy')}">13 february 2011</span>
</p>

 

好吧,如果我们希望 "dd MMMM yyyy" 取决于实际的语言环境呢?例如,我们可能想向我们添加以下信息home_en.properties

date.format=MMMM dd'','' yyyy

和等同的 home_es.properties:

date.format=dd ''de'' MMMM'','' yyyy

现在,让我们使用 th:with 将本地化的日期格式转换为变量,然后在 th:text 表达式中使用它:

<p th:with="df=#{date.format}">
  Today is: <span th:text="${#calendars.format(today,df)}">13 February 2011</span>
</p>

 

简单吧?实际上,考虑到 th:with 优先级大于 th:text,我们可以在 span 标记中解决所有问题:

<p>
  Today is: 
  <span th:with="df=#{date.format}" 
        th:text="${#calendars.format(today,df)}">13 February 2011</span>
</p>

 

关于优先级的问题,下一章再讲。

 

 

                           公众号回复以下关键字,获取更多资源

 

SpringCloud进阶之路 | Java 基础 | 微服务 | JAVA WEB | JAVA 进阶 | JAVA 面试 | MK 精讲

 

 

 

笔者开通了个人微信公众号【银河架构师】,分享工作、生活过程中的心得体会,填坑指南,技术感悟等内容,会比博客提前更新,欢迎订阅。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值