Thymeleaf实践总结

本文涉及的产品
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: Thymeleaf实践总结

SpringMVC调用可以在视图模型的执行过程中访问的数据,在Thymeleaf中相当于上下文变量。

【1】页面获取后台model数据

背景


后台放数据到model中,给页面使用。

后台

@RequestMapping("/toFace_login.html")
public String toFace_login(String username,Model model) {
      model.addAttribute("username", username);
      return "mall/user/face_login";
  }

在Thymeleaf中,这些model的attributes属性值均可以使用${attributeName}来访问,这个attributeName对于Thymeleaf来说就是一个messages,这是一个SpringEL表达式,总之,SpringEL表达式是一种支持在运行时查询和操作对象图的语言。


页面

<input id="username" type="hidden" th:value="${username}"/>

【2】页面获取request中数据

背景

后台放数据到request中,给页面使用。


后台

现在假设有一个@Controller控制器,控制器中重定向的方式发送一个request参数:

@Controller
public class SomeController {
    @RequestMapping("/")
    public String redirect() {
        return "redirect:/query?q=Thymeleaf Is Great!";
    }
}

页面

访问参数q可以使用param前缀:

<p th:text="${param.q[0]}" th:unless="${param.q == null}">Test</p>

例子中有两点需要注意的地方:

  • ${param.q!=null}检查set中是否有参数q
  • 参数是一个数组,因为它可以多值比如?q=a&r=b


还有一种访问方式是使用#httpServletRequest对象,可以直接进入javax.servlet.http.HttpServletRequest对象:

<p th:text="${#httpServletRequest.getParameter('q')}" 
th:unless="${#httpServletRequest.getParameter('q') == null}">Test</p>

【3】直接从session中获取值

背景

数据以键值对的方式放到session中使用。

页面

<input type="hidden" name="id" th:value="${session.admin.id}" />

可以看到,不同于JSP可以自动从request、session以及application中取值。Thymeleaf从session中取值需要显示标明。

【4】VUE与Thymeleaf结合使用

① vue获取session中数据


如下所示想要获取session中user.id:

[[${session?.user?.id}]]

thymeleaf页面中使用js获取model里面的值:

//activity 放到了后端model中
var activityId=[[${activity.id}]];

【5】日期格式化

① DateTime类型格式化

<input type="text" id="workTime" 
th:value="${#dates.format(order.workTime, 'yyyy-MM-dd HH:mm:ss')}" 
lay-verify="required" name="workTime"   class="layui-input">

② LocalDateTime类型格式化

maven中引入依赖:

<!-- thymeleaf格式化localdatetime -->
<dependency>
   <groupId>org.thymeleaf.extras</groupId>
   <artifactId>thymeleaf-extras-java8time</artifactId>
   <version>3.0.1.RELEASE</version>
</dependency>

页面修改如下:

<input type="text" id="workTime" 
th:value="${#temporals.format(order.workTime, 'yyyy-MM-dd HH:mm:ss')}" 
lay-verify="required" name="workTime"   class="layui-input">

【6】标签传值

① th:onclick动态传参

写法一:

<span class="myoperation" th:onclick="'openEdit('+${require.id}+')'">修改</span>
# 解析后的效果
<span class="myoperation" onclick="openEdit(1)">修改</span>

写法二:

<span class="myoperation" th:onclick="'openEdit(\''+${require.id}+'\')'">修改</span>
# 解析后的效果
<span class="myoperation" onclick="openEdit('1')">修改</span>

写法三:

<span class="myoperation" th:onclick="|openEdit(${require.id})|">修改</span>
# 解析后的效果
<span class="myoperation" onclick="openEdit(1)">修改</span>

写法四(推荐):

该中写法使用[[]]进行解析变量,需要版本为3.0.10+

<span class="myoperation" th:onclick="openEdit([[${require.id}]])">修改</span>
# 解析后的效果
<span class="myoperation" onclick="openEdit(1)">修改</span>

② th:with从后台接口获取数据

 <select th:with="dictList=${@sysDictValueServiceImpl.getValueByCode('language')}" 
 id="language" name="language"  @change="changeNature()" style="margin-bottom: 0px;width: 200px;margin: 0px 20px" >
    <option value="">请选择英语要求</option>
    <option th:each="dict : ${dictList}" th:text="${dict.name}" th:value="${dict.dictValue}"></option>
</select>
目录
相关文章
|
8月前
|
XML 数据格式
SpringMVC中使用FreeMarker实践
SpringMVC中使用FreeMarker实践
83 0
|
前端开发 安全 Java
全栈开发实战|​电子商务平台的设计与实现(Spring Boot + MyBatis + Thymeleaf)
全栈开发实战|​电子商务平台的设计与实现(Spring Boot + MyBatis + Thymeleaf)
1697 0
全栈开发实战|​电子商务平台的设计与实现(Spring Boot + MyBatis + Thymeleaf)
|
5月前
|
消息中间件 Java Kafka
Spring Boot与模板引擎:整合Thymeleaf和FreeMarker,打造现代化Web应用
【8月更文挑战第29天】这段内容介绍了在分布式系统中起到异步通信与解耦作用的消息队列,并详细探讨了三种流行的消息队列产品:RabbitMQ、RocketMQ 和 Kafka。RabbitMQ 是一个基于 AMQP 协议的开源消息队列系统,支持多种消息模型,具有高可靠性及稳定性;RocketMQ 则是由阿里巴巴开源的高性能分布式消息队列,支持事务消息等多种特性;而 Kafka 是 LinkedIn 开源的分布式流处理平台,以其高吞吐量和良好的可扩展性著称。文中还提供了使用这三种消息队列产品的示例代码。
37 0
|
8月前
|
XML Java 开发者
Spring Boot与模板引擎:整合与实战
【4月更文挑战第28天】在开发动态网站或应用时,模板引擎扮演了重要的角色。它们允许开发者将数据和HTML模板合并,从而生成动态的网页。Spring Boot支持多种模板引擎,包括Thymeleaf、Freemarker等。本篇博客将探讨Spring Boot如何整合模板引擎,并通过一个实际例子,展示如何使用Thymeleaf进行网页渲染。
302 0
|
8月前
|
缓存
FreeMarker实践总结
FreeMarker实践总结
72 1
|
8月前
|
XML 前端开发 Java
Spring Boot的Web开发之Thymeleaf模板引擎的解析及使用(Thymeleaf的基础语法以及常用属性)
Spring Boot的Web开发之Thymeleaf模板引擎的解析及使用(Thymeleaf的基础语法以及常用属性)
200 0
|
前端开发 Java Spring
Thymeleaf使用笔记
Thymeleaf使用笔记
50 0
|
前端开发 Java Maven
Spring Boot入门(十二) 之 前端静态资源的引入 (webjars 以及 thymeleaf 视图解析器)
Spring Boot入门(十二) 之 前端静态资源的引入 (webjars 以及 thymeleaf 视图解析器)
192 0
|
Java Spring
初学者必备:Spring Boot和Thymeleaf实现学生管理系统
初学者必备:Spring Boot和Thymeleaf实现学生管理系统
94 0
|
Java 程序员 Maven
模板引擎:第二章:Thymeleaf
模板引擎:第二章:Thymeleaf
165 0
模板引擎:第二章:Thymeleaf

热门文章

最新文章