thymeleaf使用

常用th标签都有那些?

关键字     功能介绍     案例
th:id     替换id       <input th:id="'xxx' + ${collect.id}"/>
th:text     文本替换     <p th:text="${collect.description}">description</p>
th:utext    支持html的文本替换   <p th:utext="${htmlcontent}">conten</p>
th:object    替换对象     <div th:object="${session.user}">
th:value    属性赋值     <input th:value="${user.name}" />
th:with    变量赋值运算     <div th:with="isEven=${prodStat.count}%2==0"></div>
th:style    设置样式     th:style="'display:' + @{(${sitrue} ? 'none' : 'inline-block')} + ''"
th:onclick    点击事件     th:οnclick="'getCollect()'"
th:each    属性赋值     tr th:each="user,userStat:${users}">
th:if    判断条件     <a th:if="${userId == collect.userId}" >
th:unless    和th:if判断相反     <a th:href="@{/login}" th:unless=${session.user != null}>Login</a>
th:href    链接地址     <a th:href="@{/login}" th:unless=${session.user != null}>Login</a> />
th:switch    多路选择 配合th:case 使用    <div th:switch="${user.role}">
th:case    th:switch的一个分支     <p th:case="'admin'">User is an administrator</p>
th:fragment    布局标签,定义一个代码片段,方便其它地方引用    <div th:fragment="alert">
th:include    布局标签,替换内容到引入的文件    <head th:include="layout :: htmlhead" th:with="title='xx'"></head> />
th:replace    布局标签,替换整个标签到引入的文件    <div th:replace="fragments/header :: title"></div>
th:selected    selected选择框 选中    th:selected="(${xxx.id} == ${configObj.dd})"
th:src    图片类地址引入     <img class="img-responsive" alt="App Logo" th:src="@{/img/logo.png}" />
th:inline    定义js脚本可以使用变量    <script type="text/javascript" th:inline="javascript">
th:action    表单提交的地址     <form action="subscribe.html" th:action="@{/subscribe}">
th:remove    删除某个属性     <tr th:remove="all"> 
1.all:删除包含标签和所有的孩子。
2.body:不包含标记删除,但删除其所有的孩子。
3.tag:包含标记的删除,但不删除它的孩子。
4.all-but-first:删除所有包含标签的孩子,除了第一个。
5.none:什么也不做。这个值是有用的动态评估。
th:attr    设置标签属性,多个属性可以用逗号分隔    比如 th:attr="src=@{/image/aa.jpg},title=#{logo}",此标签不太优雅,一般用的比较少。

 

1、checked 复选框回显的时候默认选中

th:checked="${event.name eq '' }" 单引号里放上你要相等的值

<input name="form['GENDER']" type="radio" class="ace" value="1" th:checked="${form.GENDER==1}">

2、下拉框(select option)回显选中

3、空值处理

加上result?.

例:<input type="text" class="form-control" maxlength="50" data-validation-engine="validate[custom[email]]" 
                                        name="form['EMAIL']" th:value="${result?.form?.EMAIL}"/>

4、如果是需要字符串与model中的值进行拼接的话,写法为th:text="'字符串'+${model的name}"

th:text="'姓名:'+${childD.name}"

5、引用公共CSS和JS

thymeleaf 创建引入公共模块:

1,th:inssert:保留当前主标签,保留th:fragment主标签;

2,th:replace:舍弃当前主标签,保留th:fragment主标签;

3,th:include:保留当前主标签,舍弃th:fragment主标签。

格式:引入:<head th:replace="路径 :: 模块名"></head>模块:<div th:fragment="模块名"></div>注1:引入的路径以默认的根路径static为相对路径.eg:  <head th:replace="../templates/system/index/headLink :: links"></head>注2:引入头部公共外部资源问题由于<head></head>标签中不能存放<div></div>之类的标签,而不同页面的title基本上都不同,再加上网站后期的SEO优化需要的<meta/>标签,这些都要单独出来 <head th:replace="路径 :: 模块名"></head>或者<div th:include="路径 :: 模块名"></div>都会使引入或者模块中的主标签保留下来在此处都是不适用的,解决方法如下:引入:<div th:replace="路径 :: 模块名"></div>模块:<th:block th:fragment="模块名"></th:block><th:block></th:block>是Thymeleaf提供的唯一的一个Thymeleaf块级元素,其特殊性在于Thymeleaf模板引擎在处理<th:block>的时候会删掉它本身,而保留其内容。(多用于渲染平级标签)th:replace 和<th:block>的结合,完美舍弃引入和模块处的主标签。
--------------------- 
作者:御神木下的思念 
来源:优快云 
原文:https://blog.youkuaiyun.com/qq_35123187/article/details/79986039 

页面:

<link th:replace="_common/commonCSS::CSS">

公共模块;

<th:block th:fragment="CSS">
        <!--浏览器兼容性设置-->
        <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"/>

</th:block>

 

 

 

<think>嗯,用户想了解Thymeleaf使用方法、教程和示例。首先,我需要根据用户提供的引用内容来组织信息。引用[1]提到了Thymeleaf分页和排序的示例,引用[2]和[3]涉及变量表达式和布尔属性的使用,引用[4]看起来是关于Spring的自动注入。可能用户是在使用Spring Boot整合Thymeleaf,需要相关的指导。 首先,我应该介绍Thymeleaf的基本语法,比如变量表达式${},选择表达式*{},还有链接表达式@{}。然后结合引用中的例子,比如分页和排序的实现,可能需要用到th:each和th:href这样的属性。同时,用户可能想知道如何与Spring Data结合,比如分页对象的传递和处理。 接下来,模板布局部分,用户可能希望知道如何复用页面,比如头部和尾部,所以需要提到th:insert和th:replace。引用[3]中的布尔属性处理,比如th:checked,也是需要强调的点。 然后,结合Spring Boot的整合步骤,需要提到依赖添加、配置以及Controller中如何传递Model数据。可能还需要给出一个简单的示例代码,展示如何在Controller里设置变量,并在Thymeleaf模板中使用它。 关于分页和排序的具体示例,引用[1]中的例子可能需要详细展开,比如使用Spring Data的Page对象,如何在Thymeleaf中生成分页链接,处理排序参数等。这部分可能需要步骤说明,包括后端Controller的处理和前端的Thymeleaf标签使用。 用户可能遇到的常见问题包括表达式语法错误、Spring Bean的注入问题,比如引用[4]中的自动注入是否正确,或者Thymeleaf与Spring Security的整合,这些可以作为注意事项提醒用户。 最后,生成的相关问题需要围绕用户可能进一步想了解的内容,比如表达式语法细节、与Spring Boot的整合步骤、常见问题解决,以及更高级的功能如布局和表单处理。这样可以帮助用户深入探索他们感兴趣的部分。</think>### Thymeleaf 使用方法与示例教程 #### 一、基础语法与应用 1. **变量表达式** 使用`${}`获取模型数据(基于Spring MVC的Model对象),支持嵌套属性访问。例如显示用户名称: ```html <span th:text="${user.name}">默认名称</span> ``` 引用自Spring Data整合示例中的分页数据传递[^1]。 2. **链接表达式** 通过`@{}`生成动态URL,常用于资源路径和请求路由: ```html <a th:href="@{/users/list(page=1)}">第一页</a> ``` 3. **条件与循环** - 条件判断:`th:if/th:unless` ```html <div th:if="${user.isAdmin}">管理员面板</div> ``` - 循环遍历:`th:each` ```html <tr th:each="item : ${items}"> <td th:text="${item.id}"></td> </tr> ``` #### 二、与Spring Boot整合步骤 1. **添加依赖** 在`pom.xml`中引入: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency> ``` 2. **配置视图解析器** `application.properties`配置模板路径: ```properties spring.thymeleaf.prefix=classpath:/templates/ spring.thymeleaf.suffix=.html ``` 3. **Controller示例** ```java @Controller public class UserController { @Autowired private UserService userService; @GetMapping("/users") public String listUsers(Model model, @PageableDefault Pageable pageable) { Page<User> users = userService.findAll(pageable); model.addAttribute("users", users); // 传递分页数据到模板[^1] return "user/list"; } } ``` #### 三、分页与排序实现(引用自) 1. **分页按钮生成** ```html <div class="pagination"> <a th:href="@{/users(page=0)}">首页</a> <a th:each="i : ${#numbers.sequence(1, users.totalPages)}" th:href="@{/users(page=${i-1})}" th:text="${i}"></a> </div> ``` 2. **列标题排序** ```html <th> <a th:href="@{/users(sort='name,desc')}">姓名▼</a> </th> ``` #### 四、注意事项 1. **表达式与注入问题** - 使用`${}`时需确保Model中已注入对应变量[^2] - 避免在模板中直接调用业务逻辑方法 - 自动注入需正确使用`@Autowired`(如引用[4]中的类导入问题) 2. **布尔属性处理** 通过`th:*`属性动态控制复选框等元素状态: ```html <input type="checkbox" th:checked="${rememberMe}" /> 记住我[^3] ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值