thymeleaf

本文深入解析Thymeleaf模板引擎中的各种表达式,包括变量表达式${}

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

thymeleaf 基本表达式

文章主目录

 

 如需了解thymeleaf以及thymeleaf整合spring,请参考《Thymeleaf模板引擎使用》、《Thymeleaf 集成spring

 

回到顶部

${}

变量表达式(美元表达式,哈哈),用于访问容器上下文环境中的变量,功能同jstl中${}。

例如:

复制代码

protected void doPost(HttpServletRequest req, HttpServletResponse resp) 

throws ServletException, IOException {

...

//Create Servlet context

WebContext ctx = new WebContext(req, resp, this.getServletContext(), req.getLocale());

ctx.setVariable("helloword","hello thymeleaf,wellcome!");

//Executing template engine

templateEngine.process("home", ctx, resp.getWriter());

}

复制代码

模板页面访问变量

<p><span th:text="${helloword}"></span></p>

 

回到顶部

*{}

选择表达式(星号表达式)。选择表达式与变量表达式有一个重要的区别:选择表达式计算的是选定的对象,而不是整个环境变量映射。也就是:只要是没有选择的对象,选择表达式与变量表达式的语法是完全一样的。那什么是选择的对象呢?是一个:th:object对象属性绑定的对象。

例如:

复制代码

<div th: obj ect=" ${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>

复制代码

上例中,选择表达式选择的是th:object对象属性绑定的session. user对象中的属性。

 

回到顶部

#{}

消息表达式(井号表达式,资源表达式)。通常与th:text属性一起使用,指明声明了th:text的标签的文本是#{}中的key所对应的value,而标签内的文本将不会显示。

例如:

新建/WEB-INF/templates/home.html,段落

<p th: text=" #{home. welcome}" >This text will not be show! </p>

新建/WEB-INF/templates/home.properties,home.welcome:

home.welcome=this messages is from home.properties!

测试结果:

从测试结果可以看出,消息表达式通常用于显示页面静态文本,将静态文本维护在properties文件中也方面维护,做国际化等。

 

回到顶部

@{}

超链接url表达式。

例如:

<script th:src="@{/resources/js/jquery/jquery.json-2.4.min.js}"

 

回到顶部

#maps

工具对象表达式。常用于日期、集合、数组对象的访问。这些工具对象就像是java对象,可以访问对应java对象的方法来进行各种操作。

例如:

复制代码

<div th:if="${#maps.size(stuReqBean.students[__${rowStat.index}__].score) != 0}">

<label>${score.key}:</label><input type="text" th:value="${score.value}"></input>

</div>

<div th:if="${#maps.isEmpty(stuReqBean.students[__${rowStat.index}__].score)}">

...do something...

</div>

复制代码

 

其他工具对象表达式还有:

复制代码

#dates

#calendars

#numbers 

#strings

#objects

#bools

#arrays

#lists

#sets

复制代码

 

更多详细表达式请访问:http://www.thymeleaf.org

 

 

 

1、传参

th:href="@{/console/createBilling(appKey=${appInfoForm.appKey})}"
2、if判断,并连接用and

th:if="${appInfoForm.billingId ne 0 and appInfoForm.billingPayed eq false}"
3、日期的格式化
th:text="${#dates.format(billingForm.startTime,'yyyy-MM-dd HH:mm:ss')}"
4、单击事件

th:οnclick="'javascript:deleteBilling(\''+${appInfoForm.billingId}+'\',\''+${appInfoForm.appKey}+'\');'"
其中deleteBilling是在js中定义好的方法。
5、html页面中的js必须用/*<![CDATA[*/ this is JavaScript code /*]]>*/包裹,否则会出现些许问题,比如js中&符号的出现会导致页面运行出错。

<script type="text/javascript">
/*<![CDATA[*/
function themPage(value,type){
   alert(value);
}
function themPage2(value,type){
   alert(type);
}
/*]]>*/
</script>
6、循环select 的option项

<select class="form-control" id="slaId" th:field="*{slaId}">
    <option value="0">请选择</option>
    <option th:each="slaItem : ${slaItems}" th:value="${slaItem.id}" th:text="${slaItem.name}">Options</option>
</select>

7、按原样输出带有html标签的字符

使用th:utext就可以,假设msg是java后端传过来的内容是"<br/>"的session变量,那么下面的语句中将会在span标签里面进行一次换行:

<span th:utext="${session.msg}"></span>

8、赋值判断

<li>支持自定义知识库:<strong th:text="${slaItem.supportCustomize eq 1}?'是':'否'"></strong></li>

9、判断集合长度是否是0

th:if="${#lists.size(appInfoFormList)} eq 0"


原文:https://blog.youkuaiyun.com/zhengxiangwen/article/details/64906066 



 


作者:ITPSC
出处:http://www.cnblogs.com/hjwublog/
<think>好的,我需要回答用户关于Thymeleaf的问题。首先,用户之前询问了关于KTV系统改进的问题,我提到了使用Spring Boot和Thymeleaf来实现界面渲染。现在用户想深入了解Thymeleaf。 首先,我应该回忆Thymeleaf的基本信息。Thymeleaf是一个Java模板引擎,主要用于Web应用,特别是Spring Boot项目。它支持HTML、XML等,能够与Spring MVC无缝集成。 用户可能想知道Thymeleaf的优势,比如自然模板、与Spring的整合、表达式语言等。需要解释自然模板的概念,即模板可以直接在浏览器中预览,无需后端渲染。 接下来,用户可能关心Thymeleaf的核心功能,比如变量替换、条件判断、循环、表单绑定、片段复用等。需要举例说明,比如使用th:text替换文本,th:if条件判断,th:each循环遍历集合。 还要提到Thymeleaf的模板布局功能,比如使用th:fragment和th:replace来复用页面片段,这对于保持一致的页眉页脚很有用。 另外,用户可能想知道Thymeleaf在实际项目中的使用场景,比如在Spring Boot中替代JSP,构建动静结合的页面,支持国际化等。需要说明它如何提升开发效率和维护性。 可能还需要对比其他模板引擎,比如JSP、Freemarker、Velocity,突出Thymeleaf的优点,如更好的HTML支持,更自然的模板处理,以及与Spring生态的紧密集成。 还要注意用户之前的问题中提到了Thymeleaf用于多端统一渲染,可以补充说明Thymeleaf如何适应不同前端设备,比如响应式设计,或者结合前端框架使用。 最后,确保回答结构清晰,分点说明,语言通俗易懂,避免过于技术化的术语,让用户能够理解Thymeleaf的作用和优势。</think>Thymeleaf 是一款现代化的 Java 模板引擎,专为 Web 应用和独立环境设计。以下是其核心特性的结构化解析: **一、技术定位** 1. 服务端模板引擎 - 主要处理 HTML/XML 模板渲染 - 支持 Spring Framework 深度集成(Spring Boot 官方推荐) - 适用场景:传统 MVC 架构、邮件模板、文档生成 **二、核心优势** 1. 自然模板技术 ```html <div th:text="${message}">静态预览内容</div> ``` - 模板文件无需服务端即可在浏览器直接预览 - 动态渲染时不破坏 HTML 结构验证 2. 强类型表达式系统 - Spring EL 表达式扩展:`${}`, `*{}`, `#{}` - 支持链式操作:`${user.address?.city}`(安全导航) - 内建工具对象:#dates, #strings, #lists 等 **三、架构特性** 1. 模块化设计 ```xml <dependency> <groupId>org.thymeleaf</groupId> <artifactId>thymeleaf-spring5</artifactId> </dependency> ``` - 标准方言(Spring 方言) - 自定义方言扩展机制 2. 渲染流程优化 - 模板缓存机制(开发模式可关闭) - 智能白标签处理 -
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值