Thymeleaf基本语法(二)

1、th:text

  • 可以对表达式或变量进行计算求值;
  • 可以使用“+”进行文本拼接;
  • 可以获取后端传过来的request作用域中的数据(包括Model、ModelAndView作用域)
  • 如果文本中包含有HTML标签,不会对其进行解析。

2、th:utext

此标签与th:text标签功能几乎一样,唯一不同就是,如果文本中包含有HTML标签,会对其进行解析,并响应到客户端。

3、#{...}

#{}表达式的作用是从外部文件获取值,通常是key/value形式的property文件。它的强大在于通过简单的操作,就可以处理应用程序国际化的问题。(通常搭配着th:text使用)

4、${...}

它的作用是从thymeleaf上下文获取指定变量的值

${}的预定义变量

thymeleaf提供了一些预定义变量param、session和application,使用${}可以方便地获取这些变量的值:

  • 获取当前名称为x的请求参数:${param.x}
  • 获取当前session中名称为x的属性:${session.x}
  • 获取当前ServletContext中名称为x的属性:${application.x}

可见,如果变量是一个对象的话,${}还可以通过点语法获取对象的属性值。如果要获取的属性是一个私有字段,则它必须提供一个get方法,否则属性值获取失败。

<p th:text="${title}">这是标题</p>

示例使用了Thymeleaf模板的变量表达式${...}用来动态获取P标签中的内容,如果当前程序没有启动或者当前上下文中不存在title变量,该片段会显示标签默认值“这是标题”;如果当前上下文中存在title变量并且程序已经启动,当前P标签中的默认文本内容将会被title变量的值所替换,从而达到模板引擎页面数据动态替换的效果

同时,Thymeleaf为变量所在域提供了一些内置对象,具体如下所示

# ctx:上下文对象
# vars:上下文变量
# locale:上下文区域设置
# request:(仅限Web Context)HttpServletRequest对象
# response:(仅限Web Context)HttpServletResponse对象
# session:(仅限Web Context)HttpSession对象
# servletContext:(仅限Web Context)ServletContext对象

结合上述内置对象的说明,假设要在Thymeleaf模板引擎页面中动态获取当前国家信息,可以使用#locale内置对象,示例代码如下 

The locale country is: <span th:text="${#locale.country}">US</span>

上述代码中,使用th:text="${#locale.country}"动态获取当前用户所在国家信息,其中标签内默认内容为US(美国),程序启动后通过浏览器查看当前页面时,Thymeleaf会通过浏览器语言设置来识
当前用户所在国家信息,从而实现动态替换

5、*{...}

星号表达式与上文中的$表达式功能大致相同,二者最大的区别是:星号语法对选定对象而不是整个上下文的表达式求值。也就是说,只要没有选中的对象,美元和星号的语法就完全一样。

eg:

  <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>

这完全等同于:

<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>

当然,美元和星号语法可以混合使用。

6、@{...} 

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

<!-- 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>

 注意:

  • th:href是修饰符属性:一旦处理,它将计算要使用的链接 URL 并将该值设置为标记的href属性。<a>

  • 我们可以对 URL 参数使用表达式(如您在 中所见orderId=${o.id})。所需的 URL 参数编码操作也将自动执行。

  • 如果需要多个参数,这些参数将用逗号分隔:@{/order/process(execId=${execId},execType='FAST')}

  • URL 路径中也允许使用变量模板:@{/order/{orderId}/details(orderId=${orderId})}

  • /以(eg: )开头的相对 URL/order/details将自动以应用程序上下文名称为前缀。

  • 如果 cookie 未启用或未知,则";jsessionid=..."可能会在相对 URL 中添加后缀,以便保留会话。这称为URL 重写response.encodeURL(...),Thymeleaf 允许您通过使用Servlet API 中的机制为每个 URL插入自己的重写过滤器。

  • th:href属性允许我们(可选地)在我们的模板中有一个有效的静态href属性,以便我们的模板链接在直接打开用于原型设计时仍然可以由浏览器导航。

该表达也可以与其他表达式结合使用:

eg:

<a th:href="@{${url}(orderId=${o.id})}">view</a>
<a th:href="@{'/details/'+${user.login}(orderId=${o.id})}">view</a>

7、片段表达式 ~{...}

片段表达式~{...}用来标记一个片段模板,并根据需要移动或传递给其他模板。其中,最常见的用法是使用th:insertth:replace属性插入片段,示例代码如下:

<div th:insert="~{thymeleafDemo::title}"></div>

上述代码中,使用th:insert属性将title片段模板引用到该标签中。thymeleafDemo为模板名称,Thymeleaf会自动查找“/resources/templates/”目录下的thymeleafDemo模板,title为片段名称。

8、附加文本与文字替换

8.1、附加文本

文本,无论是文字还是评估变量或消息表达式的结果,都可以使用+运算符轻松附加:

<span th:text="'The name of the user is ' + ${user.name}">

 8.2、文字替换

文字替换允许轻松格式化包含来自变量的值的字符串,而无需在文字后面附加'...' + '...'.

这些替换必须用竖线 ( |) 包围,例如:

<span th:text="|Welcome to our application, ${user.name}!|">

 这相当于:

<span th:text="'Welcome to our application, ' + ${user.name} + '!'">

文字替换可以与其他类型的表达式组合:

<span th:text="${onevar} + ' ' + |${twovar}, ${threevar}|">

在文字替换中只允许使用变量/消息表达式 ( ${...}*{...}, )。没有其他文字 ( )、布尔/数字标记、条件表达式等。#{...}|...|'...'

9、算术运算 

还可以使用一些算术运算:+-*和。/%

<div th:with="isEven=(${prodStat.count} % 2 == 0)">

请注意,其中一些运算符存在文本别名:( div/mod%)。

10、比较器与等式

 表达式中的值可以与><>=and<=符号进行比较,==and!=运算符可用于检查是否相等(或不相等)。请注意,XML 规定<和>符号不能用于比较符号,我们应该使用&lt;&gt;进行替换。

<div th:if="${prodStat.count} &gt; 1">
<span th:text="'Execution mode is ' + ( (${execMode} == 'dev')? 'Development' : 'Production')">

其它比较符号的别名如下:

gt (>),lt (<),ge (>=),le (<=), not (!),eq (==),neq/ne (!=).

11、条件表达式 

语法:条件?then : else

<tr th:class="${row.even}? 'even' : 'odd'">
  ...
</tr>

 条件表达式可以是变量 ( ${...}*{...})、消息 ( #{...})、URL ( @{...}) 或文字 ( '...')。

条件表达式也可以使用括号嵌套:

<tr th:class="${row.even}? (${row.first}? 'first' : 'even') : 'odd'">
  ...
</tr>

 也可以省略其他表达式,在这种情况下,如果条件为假,则返回空值:

<tr th:class="${row.even}? 'alt'">
  ...
</tr>

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Thymeleaf是一个流行的服务器端Java模板引擎,它提供了一套丰富的语法和标签,让开发者可以更加方便地处理HTML模板。以下是Thymeleaf的语法大全: 1. 基本语法 Thymeleaf基本语法是使用${}表示表达式,例如: ``` <p th:text="${user.name}">John Doe</p> ``` 上面的代码会将user对象的name属性的值显示在页面上。 2. 属性设置 Thymeleaf可以在HTML标签添加属性,例如: ``` <img src="image.png" th:src="@{${user.avatarUrl}}" /> ``` 上面的代码,使用@{}包裹表达式,将${user.avatarUrl}的值设置为img标签的src属性。 3. 条件判断 Thymeleaf支持if/else条件判断语句,例如: ``` <p th:if="${user.isAdmin}">Welcome Admin</p> ``` 上面的代码,如果user.isAdmin为true,则显示“Welcome Admin”。 4. 列表循环 Thymeleaf可以通过th:each指令实现列表循环,例如: ``` <ul> <li th:each="item : ${items}" th:text="${item}"></li> </ul> ``` 上面的代码,将items列表的每个元素显示在li标签。 5. 模板继承 Thymeleaf支持模板继承,可以在父模板定义公共部分,例如: 父模板: ``` <html> <head th:fragment="head"> <title>My Website</title> <link href="style.css" rel="stylesheet" /> </head> <body> <header th:fragment="header"> <h1>My Website</h1> </header> <div th:fragment="content"></div> <footer th:fragment="footer"></footer> </body> </html> ``` 子模板: ``` <!DOCTYPE html> <html xmlns:th="http://www.thymeleaf.org" th:include="layout/layout :: head"> <body> <div th:include="layout/layout :: header"></div> <div th:replace="content"></div> <div th:include="layout/layout :: footer"></div> </body> </html> ``` 上面的代码,子模板使用th:include指令引入父模板的公共部分,使用th:replace指令替换content内容。 6. URL处理 Thymeleaf可以处理URL,例如: ``` <a th:href="@{http://www.example.com}">Example Website</a> ``` 上面的代码,将链接指向http://www.example.com。 以上是Thymeleaf的语法大全,希望能帮助到你!

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

悠然予夏

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

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

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

打赏作者

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

抵扣说明:

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

余额充值