Thymeleaf系列【7】局部变量、属性优先级、注释、 th:block标签

局部变量

定义局部变量并使用

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

比如在th:each标签中,定义了一个prod变量,该prod变量仅在标签范围内可用,在标签内,可以使用该变量。

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

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:with="df=#{date.format}" 
        th:text="${#calendars.format(today,df)}">13 February 2011</span>
</p>

属性优先级

当您th:*在同一个标​​签中编写多个属性时会发生什么?例如:

<ul>
  <li th:each="item : ${items}" th:text="${item.description}">Item description here...</li>
</ul>

我们希望该th:each属性在之前执行,th:text以便我们得到我们想要的结果,但鉴于 HTML/XML 标准没有赋予标记中属性的写入顺序任何种类的意义,因此优先级必须在属性本身中建立机制,以确保这将按预期工作。

因此,所有 Thymeleaf 属性都定义了一个数字优先级,它确定了它们在标签中的执行顺序,数字越小,优先级越高。

这个优先机制意味着与属性位置并无关系,只与属性名有关。

注释

标准 HTML/XML 注释

标准 HTML/XML 注释<!- - … - ->可以在 Thymeleaf 模板中的任何地方使用。Thymeleaf 不会处理这些评论中的任何内容,并将逐字复制到结果中,在浏览器中是能看到这些注释的。不推荐使用这种方式。

Thymeleaf 解析器级注释

解析器级别的注释块是在 Thymeleaf 解析模板时将简单地从模板中删除的代码。

<!--/* This code will be removed at Thymeleaf parsing time! */-->

Thymeleaf 将删除<!- -/注释/- ->,因此这些注释块也可用于在模板静态打开时显示代码,直到它会在 Thymeleaf 处理时被删除,浏览器 F12 无法看到被注释的内容,但是如果不通过 Thyneleaf 渲染,而是以原型访问时,浏览器 F12 可以看到被注释的内容。

添加html及Thymeleaf 解析器级注释

            <!--/* 循环用户 */-->
            <!--循环用户-->

显示效果,解析器级注释已被处理:
在这里插入图片描述

Thymeleaf原型注释

原型注释格式:

<!--/*/
....
/*/-->

Html 注释的基础上加上了 /*/,它的作用是当模板被静态打开(即作为原型)时,这些被注释的内容将会被注释掉,而通过 Thymeleaf 渲染时, 会被自动删除,其中的内容都将进行正常显示。这与上面解析器级注释方式刚好相反,解析器级注释方式是作为原型打开时可以显示,而 Thymeleaf 渲染时会被删除。

th:block标签

< th:block ></ th:block>是Thymeleaf提供的唯一的一个Thymeleaf块级元素,其特殊性在于Thymeleaf模板引擎在处理< th:block>的时候会删掉它本身,标签本身不显示,而保留其内容。

    <th:block th:if="1 == 1">
        <div id="div1">
            div1
        </div>
        <div id="div2">
            div2
        </div>
    </th:block>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

墨 禹

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值