Thymeleaf 教程

选择变量表达式

选择变量表达式与变量表达式功能基本一致,只是在变量表达式的基础上增加了与 th:object 的配合使用。

当使用 th:object 存储一个对象后,我们可以在其后代中使用选择变量表达式(*{...})获取该对象中的属性,其中,“*” 即代表该对象。

为什么需要选择变量表达式?如果我们需要在页面上面显示一个用户信息,没有选择变量表达式,做法如下:

<ul>
    <li th:text="${user.id}"></li>
    <li th:text="${user.username}"></li>
    <li th:text="${user.age}"></li>
    <li th:text="${user.sex}"></li>
    <li th:text="${user.email}"></li>
    <li th:text="${user.phoneNum}"></li>
</ul>

上面代码中,我们重复写了 “user.” 字符串 5 次。如果用户信息非常多,而且 user 变量名也很长(如:safeOpeationUserInfo 安全操作员信息)时,增加了我们的工作量(如果我们要对 user 变量重命名,需要将所有 user 进行重命名),而且代码看上去特别臃肿。如下:

<ul>
    <li th:text="${safeOpeationUserInfo.id}"></li>
    <li th:text="${safeOpeationUserInfo.username}"></li>
    <li th:text="${safeOpeationUserInfo.age}"></li>
    <li th:text="${safeOpeationUserInfo.sex}"></li>
    <li th:text="${safeOpeationUserInfo.email}"></li>
    <li th:text="${safeOpeationUserInfo.phoneNum}"></li>
</ul>

为了解决这个问题,Thymeleaf 提供了对象选择表达式,使用它重写上面代码(注意:th:object 用于存储一个临时变量,该变量只在该标签及其后代中有效)。代码如下:

<ul th:object="${user}">
    <li th:text="*{id}"></li>
    <li th:text="*{username}"></li>
    <li th:text="*{age}"></li>
    <li th:text="*{sex}"></li>
    <li th:text="*{email}"></li>
    <li th:text="*{phoneNum}"></li>
</ul>

渲染结果如下:

<ul>
    <li>1000</li>
    <li>Tom</li>
    <li>28</li>
    <li>男</li>
    <li>tom@163.com</li>
    <li>15178675665</li>
</ul>
说说我的看法
全部评论(
没有评论
关于
本网站专注于 Java、数据库(MySQL、Oracle)、Linux、软件架构及大数据等多领域技术知识分享。涵盖丰富的原创与精选技术文章,助力技术传播与交流。无论是技术新手渴望入门,还是资深开发者寻求进阶,这里都能为您提供深度见解与实用经验,让复杂编码变得轻松易懂,携手共赴技术提升新高度。如有侵权,请来信告知:hxstrive@outlook.com
公众号