自己总结的thymeleaf(引擎模板)一些基本用法

【Spring Boot】Thymeleaf模板引擎 — Thymeleaf的高级用法 主要介绍Thymeleaf的内联、内置对象、内置变量等高级用法。 阅读详情
thymaleaf的介绍:
它是一个引擎模板,可以完全代替jsp,此外还有Velocity、FreeMarker等引擎模板。
它的特点:
  1. Thymeleaf
    在有网络和无网络的环境下皆可运行,即它可以让美工在浏览器查看页面的静态效果,也可以让程序员在服务器查看带数据的动态页面效果。这是由于它支持
    html 原型,然后在 html 标签里增加额外的属性来达到模板+数据的展示方式。浏览器解释 html 时会忽略未定义的标签属性,所以
    thymeleaf 的模板可以静态地运行;当有数据返回到页面时,Thymeleaf 标签会动态地替换掉静态内容,使页面动态显示。
  2. Thymeleaf 开箱即用的特性。它提供标准和spring标准两种方言,可以直接套用模板实现JSTL、
    OGNL表达式效果,避免每天套模板、该jstl、改标签的困扰。同时开发人员也可以扩展和创建自定义的方言。
  3. Thymeleaf 提供spring标准方言和一个与 SpringMVC
    完美集成的可选模块,可以快速的实现表单绑定、属性编辑器、国际化等功能。

controller:

model.addAttribute("pageInfo", new PageInfo<Goods>(pageInfo));

前端html:(tGoods.xxx),count是序号,而不是主键id
<tr th:each="tGoods,count:${pageInfo.list}">
然后就可以用:

 <td><input type="checkbox" value="1" th:value="${tGoods.id}" lay-skin="primary" name="id"/></td>
                            <td th:text="${count.count}"></td>
                                        <td style="cursor:pointer;" th:text="${tGoods.goodsName}"></td>
                                        <td class="td-status" style="cursor:pointer;" th:text="${tGoods.goodsStatus==1?'未上架':(tGoods.goodsStatus==3?'上架':'删除')}"></td>
                                        <td style="cursor:pointer;" th:text="${tGoods.topStatus eq true?'是':'否'}"></td>
                                        <td style="cursor:pointer;" th:text="${tGoods.price}"></td>
                                    <td style="cursor:pointer;" th:text="${#temporals.format(tGoods.updateTime, 'yyyy-MM-dd HH:mm:ss')}"></td>
                                    <td style="cursor:pointer;" th:text="${#temporals.format(tGoods.createTime, 'yyyy-MM-dd HH:mm:ss')}"></td>

变量表达式: th:each=“tGoods,count:${pagelnfo.list}” 或者下面代码 th:text

 <span class="r wei-height">共有数据:<strong th:text="${pageInfo.total}"></strong> 条</span>

选择表达式:
只计算的是 你选择的变量,如果没有选择的变量,那和变量表达式没有太多的出入。
*{customer.name}

被指定的object由th:object属性定义:

    <div th:object="${book}">  
      ...  
      <span th:text="*{title}">...</span>  
      ...  
    </div>  

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

    <table>  
      ...  
      <th th:text="#{header.address.city}">...</th>  
      <th th:text="#{header.address.country}">...</th>  
      ...  
    </table>  

URL表达式:

URL表达式指的是把一个有用的上下文或回话信息添加到URL,这个过程经常被叫做URL重写。
@{/order/list}
URL还可以设置参数:
@{/order/details(id=${orderId})}
相对路径:
@{…/documents/report}

让我们看这些表达式:

    <form th:action="@{/createOrder}">  
    <a href="main.html" th:href="@{/main}">

而且选择表达式和变量表达式可以混用,有些情况下,用法不同,但是效果差不多:
都是session.user对象
选择表达式:

  <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 th:object="${session.user}">
      <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>

混用:

  <div th:object="${session.user}">
      <p>Name: <span th:text="*{firstName}">Sebastian</span>.</p>
      <p>Surname: <span th:text="${session.user.lastName}">Pepper</span>.</p>
      <p>Nationality: <span th:text="*{nationality}">Saturn</span>.</p>
  </div>

表达式支持的语法

字面(Literals):

  1. 文本文字(Text literals): ‘one text’, ‘Another one!’,…
  2. 数字文本(Number literals): 0, 34, 3.0, 12.3,…
  3. 布尔文本(Boolean literals): true, false
  4. 空(Null literal): null
  5. 文字标记(Literal tokens): one, sometext, main,…

文本操作(Text operations)

  • 字符串连接(String concatenation): +
  • 文本替换(Literal substitutions): |The name is ${name}|

算术运算(Arithmetic operations)

  • 二元运算符(Binary operators): +, -, *, /, %
  • 减号(单目运算符)Minus sign (unary operator): -

布尔操作(Boolean operations)

  • 二元运算符(Binary operators):and, or
  • 布尔否定(一元运算符)Boolean negation (unary operator):!, not

比较和等价(Comparisons and equality)

  • 比较(Comparators): >, <, >=, <= (gt, lt, ge, le)
  • 等值运算符(Equality operators):==, != (eq, ne)

条件运算符(Conditional operators)

  • If-then: (if) ? (then)
  • If-then-else: (if) ? (then) : (else)
  • Default: (value) ?: (defaultvalue)

其实这些都可以被组合嵌套的:

'User is of type ' + (${user.isAdmin()} ? 'Administrator' : (${user.type} ?: 'Unknown'))

常用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:onclick="'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:caseth: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:selectedselected选择框 选中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">
th:attr设置标签属性,多个属性可以用逗号分隔比如 th:attr="src=@{/image/aa.jpg},title=#{logo}",此标签不太优雅,一般用的比较少。
注:
<tr th:remove="all"> 

1.all:删除包含标签和所有的孩子。
2.body:不包含标记删除,但删除其所有的孩子。
3.tag:包含标记的删除,但不删除它的孩子。
4.all-but-first:删除所有包含标签的孩子,除了第一个。
5.none:什么也不做。这个值是有用的动态评估。

我们也可以一个标签中包括多个th:x属性,其生效的优先级顺序为:

include,each,if/unless/switch/case,with,attr/attrprepend/attrappend,value/href,src ,etc,text/utext,fragment,remove。

几种常用的使用方法

1、赋值、字符串拼接
 <p  th:text="${collect.description}">description</p>
 <span th:text="'Welcome to our application, ' + ${user.name} + '!'">
字符串拼接还有另外一种简洁的写法
<span th:text="|Welcome to our application, ${user.name}!|">
2、条件判断 If/Unless

Thymeleaf中使用th:if和th:unless属性进行条件判断,下面的例子中,标签只有在th:if中条件成立时才显示:

<a th:if="${myself=='yes'}" > </i> </a>
<a th:unless=${session.user != null} th:href="@{/login}" >Login</a>

th:unless于th:if恰好相反,只有表达式中的条件不成立,才会显示其内容。

也可以使用 (if) ? (then) : (else) 这种语法来判断显示的内容

3、for 循环
<tr  th:each="collect,iterStat : ${collects}"> 
     <th scope="row" th:text="${collect.id}">1</th>
     <td >
        <img th:src="${collect.webLogo}"/>
     </td>
     <td th:text="${collect.url}">Mark</td>
     <td th:text="${collect.title}">Otto</td>
     <td th:text="${collect.description}">@mdo</td>
     <td th:text="${terStat.index}">index</td>
 </tr>

iterStat称作状态变量,属性有:

index:当前迭代对象的index(从0开始计算)
count: 当前迭代对象的index(从1开始计算)
size:被迭代对象的大小
current:当前迭代变量
even/odd:布尔值,当前循环是否是偶数/奇数(从0开始计算)
first:布尔值,当前循环是否是第一个
last:布尔值,当前循环是否是最后一个

4、URL

URL在Web应用模板中占据着十分重要的地位,需要特别注意的是Thymeleaf对于URL的处理是通过语法@{…}来处理的。
如果需要Thymeleaf对URL进行渲染,那么务必使用th:href,th:src等属性,下面是一个例子

<!-- Will produce 'http://localhost:8080/standard/unread' (plus rewriting) -->
 <a  th:href="@{/standard/{type}(type=${type})}">view</a>

<!-- Will produce '/gtvg/order/3/details' (plus rewriting) -->
<a href="details.html" th:href="@{/order/{orderId}/details(orderId=${o.id})}">view</a>

设置背景

<div th:style="'background:url(' + @{/<path-to-image>} + ');'"></div>

根据属性值改变背景

 <div class="media-object resource-card-image"  th:style="'background:url(' + @{(${collect.webLogo}=='' ? 'img/favicon.png' : ${collect.webLogo})} + ')'" ></div>

几点说明:

  • 上例中URL最后的(orderId=${o.id}) 表示将括号内的内容作为URL参数处理,该语法避免使用字符串拼接,大大提高了可读性
  • @{…}表达式中可以通过{orderId}访问Context中的orderId变量
  • @{/order}是Context相关的相对路径,在渲染时会自动添加上当前Web应用的Context名字,假设context名字为app,那么结果应该是/app/order
5、内联js

内联文本:[[…]]内联文本的表示方式,使用时,必须先用th:inline=”text/javascript/none”激活,th:inline可以在父级标签内使用,甚至作为body的标签。内联文本尽管比th:text的代码少,不利于原型显示。

<script th:inline="javascript">
/*<![CDATA[*/
...
var username = /*[[${sesion.user.name}]]*/ 'Sebastian';
var size = /*[[${size}]]*/ 0;
...
/*]]>*/
</script>

js附加代码:

/*[+
var msg = 'This is a working application';
+]*/

js移除代码:

/*[- */
var msg = 'This is a non-working template';
/* -]*/
6、内嵌变量

为了模板更加易用,Thymeleaf还提供了一系列Utility对象(内置于Context中),可以通过#直接访问:

  1. dates : java.util.Date的功能方法类。
  2. calendars : 类似#dates,面向java.util.Calendar
  3. numbers : 格式化数字的功能方法类
  4. strings : 字符串对象的功能类,contains,startWiths,prepending/appending等等。
  5. objects: 对objects的功能类操作。
  6. bools: 对布尔值求值的功能方法。
  7. arrays:对数组的功能类方法。
  8. lists: 对lists功能类方法
  9. sets
  10. maps
  11. …

下面用一段代码来举例一些常用的方法:

dates
/*
 * Format date with the specified pattern
 * Also works with arrays, lists or sets
 */
${#dates.format(date, 'dd/MMM/yyyy HH:mm')}
${#dates.arrayFormat(datesArray, 'dd/MMM/yyyy HH:mm')}
${#dates.listFormat(datesList, 'dd/MMM/yyyy HH:mm')}
${#dates.setFormat(datesSet, 'dd/MMM/yyyy HH:mm')}

/*
 * Create a date (java.util.Date) object for the current date and time
 */
${#dates.createNow()}

/*
 * Create a date (java.util.Date) object for the current date (time set to 00:00)
 */
${#dates.createToday()}
strings
/*
 * Check whether a String is empty (or null). Performs a trim() operation before check
 * Also works with arrays, lists or sets
 */
${#strings.isEmpty(name)}
${#strings.arrayIsEmpty(nameArr)}
${#strings.listIsEmpty(nameList)}
${#strings.setIsEmpty(nameSet)}

/*
 * Check whether a String starts or ends with a fragment
 * Also works with arrays, lists or sets
 */
${#strings.startsWith(name,'Don')}                  // also array*, list* and set*
${#strings.endsWith(name,endingFragment)}           // also array*, list* and set*

/*
 * Compute length
 * Also works with arrays, lists or sets
 */
${#strings.length(str)}

/*
 * Null-safe comparison and concatenation
 */
${#strings.equals(str)}
${#strings.equalsIgnoreCase(str)}
${#strings.concat(str)}
${#strings.concatReplaceNulls(str)}

/*
 * Random
 */
${#strings.randomAlphanumeric(count)}

使用thymeleaf布局

使用thymeleaf布局非常的方便

定义代码片段

<footer th:fragment="copy"> 
&copy; 2016
</footer>

在页面任何地方引入:

<body> 
  <div th:include="footer :: copy"></div>
  <div th:replace="footer :: copy"></div>
 </body>

th:include 和 th:replace区别,include只是加载,replace是替换

返回的HTML如下:

<body> 
   <div> &copy; 2016 </div> 
  <footer>&copy; 2016 </footer> 
</body>

下面是一个常用的后台页面布局,将整个页面分为头部,尾部、菜单栏、隐藏栏,点击菜单只改变content区域的页面

<body class="layout-fixed">
  <div th:fragment="navbar"  class="wrapper"  role="navigation">
    <div th:replace="fragments/header :: header">Header</div>
    <div th:replace="fragments/left :: left">left</div>
    <div th:replace="fragments/sidebar :: sidebar">sidebar</div>
    <div layout:fragment="content" id="content" ></div>
    <div th:replace="fragments/footer :: footer">footer</div>
  </div>
</body>

任何页面想使用这样的布局值只需要替换中见的 content模块即可

 <html xmlns:th="http://www.thymeleaf.org" layout:decorator="layout">
   <body>
      <section layout:fragment="content">
    ...

也可以在引用模版的时候传参

<head th:include="layout :: htmlhead" th:with="title='Hello'"></head>

layout 是文件地址,如果有文件夹可以这样写 fileName/layout:htmlhead
htmlhead 是指定义的代码片段 如 th:fragment=“copy”

第 2-4 课:模板引擎 Thymeleaf 高阶用法 上一课我们介绍了 Thymeleaf 最常用的使用语法,这一课我们继续学习 Thymeleaf 高阶的使用方式,并对这些使用方式进行总结分类。其实上一课的内容,基本可以满足 Thymeleaf 80% 的使用场景,高阶用法会在某些场景下提供更高效、便捷的使用方式。 内联 [ [ ] ] 如果不想通过 th 标签而是简单地访问 model 对象数据,或是想在 javascript 代码块里访问 mo... 阅读详情

相关推荐

Thymeleaf模板引擎基础用法全面总结与实战指南

简介:Thymeleaf是一款广泛应用于Spring Boot等Java Web项目的现代化模板引擎,支持HTML页面的动态数据绑定与逻辑处理,兼具静态可读性与动态渲染能力。本文档系统梳理了Thymeleaf的核心语法与常用功能,涵盖依赖配置、文本与属性表达式、条件判断、循环遍历、国际化支持、表达式语言、模板布局及与Spring框架的整合等内容。通过本指南,开发者可在无需启动服务器的情况下预览页面结构,并高效实现Web界面的动态化开发,适用于构建可维护性强、用户体验佳的企业级应用。

weixin_42509720的博客 943

Thymeleaf语法标签

因为List集合是个有序列表,里面内容可能不止一个,需要遍历List对其中对象取值,而遍历需要用到标签:th:each,具体使用为 ,其中item相当于遍历每一次的对象名,在下面的作用域可以直接使用,而userlist就是类里面的数据或者其他数据存储的List的名称。在Thymeleaf中,如果想引入链接比如link,href,src,需要使用@{资源地址}引入资源。其中资源地址可以static目录下的静态资源,也可以是互联网中的绝对资源。

zjw_rp的博客 1472

告别SendKeys!用DD驱动级模拟在Windows 10/11上实现真·后台键鼠操作(Python实战)

本文详细介绍了如何使用DD驱动级模拟技术在Windows 10/11上实现真后台键鼠操作,解决传统方法如pyautogui和SendKeys的局限性。通过Python实战案例,展示了驱动级模拟在游戏自动化、RPA等场景中的高效应用,包括环境配置、核心API解析及高级优化技巧。

weixin_42519985的博客 799

Thymeleaf中使用script传参

项目背景:SpringBoot+Thymeleaf在web界面中想要实现一个如图的删除功能,在用script标签向HTML页面中嵌入一个删除的的脚本时,换了多种方法(下图为例)都无法传参,报错500 通过如下代码实现1.需要在标签上显示开启: 2.双中括号 [[ ]] 输出所需文本,结果会使用引号将其括起来并且对其文本内容中进行JS转义 未解决问题:IDEA中双中括号[[]]显示红色波浪线,但程序可以正常

weixin_50425831的博客 1867

2024年物联网嵌入式最新嵌入式期末大作业——家用智能晾衣杆,初面蚂蚁金服

在家用智能晾衣杆中,用户可以根据自身的需要,切换手动和自动两个模式。天气对应的接口对应心知天气的天气图,可以下载后:调整尺寸->调整透明度->用画图工具保存为单色位图->提取出点阵信息(如我用的zimoV2.2软件),将点阵信息,存到数组里,根据weather的信息,调用display.drawBitmap()方法就能打印出对应的天气了。该库依赖于,将他们导入后,设置屏幕的主从关系,片选信号和数据,时钟信号等引脚后,就设置好屏幕的驱动。

2401_85013604的博客 1247

HFSS之天线设计实例

目录 矩形微带天线 微带天线尺寸计算 微带线的3个关键指标如以下 HFSS设计流程 新建工程并设置求解类型 天线建模 添加求解设置和扫频设置 天线建模步骤 谐振点查看 优化设计 查看天线分析结果 3D增益 Smith圆图 S参数 驻波比 ​ 平面增益 方向性系数\增益\轴比 矩形微带天线 微带天线的概念首先是由Deschamps于1953年提出来的,经过20年左右的发展,Munson和Howell于20世纪70年代初期制造出来了实际的微带天线 一个简单的...

ASH_GUARDIAN的博客 1万+

Thymeleaf模板表达式大全

目录 日期格式、组件提取等 日历 格式化数字对象 字符串处理 对象处理 布尔值相关 数组相关 list集合相关 set集合相关 map集合相关 聚集,聚合 获取外部信息内部变量 处理可能重复的id属性 日期格式、组件提取等 ${#dates.format(date)} ${#dates.arrayFormat(datesArray)} ${#dates.lis...

算命de博客 1055

Cesium 入门

Viewer:主要窗口Cesium 展示三维要素内容的主要窗口,包含三维地球的视窗,还包含了一些基础控价const viewer = new Cesium.Viewer('div的ID',{ options可选参数 },包括图层)options可选参数animation: false, 隐藏动画效果timeline:false, 隐藏时间轴等等Scene:场景类,隐藏地球图层Entity:实体类。

虎康的博客 3666

Thymeleaf 与 Javascript

在 javascript 代码中使用 Thymeleaf 模板引擎: <script th:inline="javascript"> $("#content").html( "<select name='status'>"+ " <option value=''>[[#{admin.common....

diexing1509的博客 482

嵌入式NuttX RTOS面试题及参考答案

NuttX 的板级支持包(BSP)是一组软件组件,用于将 NuttX 操作系统适配到特定的硬件平台上。BSP 提供了硬件抽象层,使得 NuttX 能够与硬件进行交互,包括初始化硬件设备、提供设备驱动程序等。BSP 的主要作用是隐藏硬件细节,为上层应用程序和操作系统内核提供统一的接口,从而提高软件的可移植性和可维护性。开发 NuttX 的 BSP 通常需要以下步骤:硬件分析:首先需要对目标硬件平台进行详细的分析,了解硬件的架构、处理器类型、外设接口等信息。

大模型大数据攻城狮的专栏 1303

有手就行的CNVD证书获取

知己知彼百战不殆。要想成功挖掘CNVD漏洞并获得证书,第一步就是深入了解CNVD的漏洞发放规则和评分标准。CNVD(国家信息安全漏洞共享平台)对漏洞的评级主要基于漏洞的危害程度、影响范围以及利用难度。此外,CNVD倾向于收录那些影响国内重要信息系统或民生领域的漏洞,因此在目标选择上可以优先考虑政府、教育、医疗、金融等行业的系统。同时,提交漏洞时需要提供详细的漏洞描述、复现步骤和修复建议,确保报告内容清晰完整,以提高审核通过率。

iSee857的博客 2442

thymeleaf模板引擎的使用

一.常用配置 spring: thymeleaf: cache: false mode: LEGACYHTML5 # 配置了前缀 prefix: classpath:/templates/ # 配置了后缀 suffix: .html web: resources: # 配置静态文件路径默认是classpath:/static/ static-locations: classpath:/static/ mvc:

Antg的博客 373

YOLO26 无损剪枝:稀疏训练 + 结构化通道裁剪

YOLO26 无损剪枝链路:YOLO26s (7.2M) → 稀疏训练 30 epoch (L1 on BN gamma, lam=0.01) → 阈值剪枝 50% (gamma<quantile(0.5)) → 结构化重建 Conv+BN → 微调 10 epoch (lr=1e-4) → YOLO26n (1.9M, mAP50 0.808, 仅降 0.6%)。核心贡献:稀疏训练让 BN gamma 趋向二元分布 (近 0 或近 1), 剪枝阈值可直接取 median 自动 50% 压缩。

m0_64661770的博客 263

Thymeleaf模板引擎基本用法

Thymeleaf模板引擎 Thymeleaf是一个XML/XHTML/HTML5模板引擎,可用于Web与非Web环境中的应用开发。它是一个开源的Java库,基于Apache License 2.0许可,由Daniel Fernández创建,该作者还是Java加密库Jasypt的作者。# 代表 获取对象 从 messages bundle 也就是消息的资源本地化文件 $ 表示从model里面获取

倆天 1287

195、大模型蒸馏与压缩:知识蒸馏与VLA模型轻量化

折腾完这一整套流程,最大的感悟是:知识蒸馏不是简单的模型压缩,而是知识迁移的工程艺术。每一步都有坑,每个参数都可能影响最终性能。给后来者的建议是:先别急着上蒸馏,把teacher模型的推理延迟和显存占用测清楚,确定瓶颈在哪里——是计算量太大还是内存带宽不够,这决定了你该用蒸馏还是量化还是剪枝。蒸馏训练时一定要监控每一层的特征对齐loss,别只看总loss。如果某一层的对齐loss特别高,说明student在这一层学歪了,需要调整该层的损失权重或者增加该层的投影头容量。

sundong_81的博客 110

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

【Thymeleaf】spring boot模板引擎thymeleaf用法详解

Thymeleaf超级详细入门级讲解

Hanson的博客 1938

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Thymeleaf模板引擎 常用的用法整理总结

模板引擎(这里特指用于Web开发的模板引擎)是为了使用户界面与业务数据(内容)分离而产生的,它可以生成特定格式的文档,用于网站的模板引擎就会生成一个标准的html文档。从字面上理解模板引擎,最重要的就是模板二字,这个意思就是做好一个模板后套入对应位置的数据,最终以html的格式展示出来,这就是模板引擎的作用。Thymeleaf选用html作为模板页,这是任何一款其他模板引擎做不到的!Thymeleaf使用html通过一些特定标签语法代表其含义,但并未破坏html结构。

杨杨吖的博客 2907

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Thymeleaf 模板引擎用法

学习、改良、极致 博客园 首页 新随笔 联系 管理 订阅 随笔- 31 文章- 0 评论- 50 Thymeleaf 常用属性 文章主目录 th:action th:each th:field th:href th:id th:if th:include ...

agg7911的博客 216

SpringBoot-Thymeleaf模板引擎整合及基本用法总结

SpringBoot-Thymeleaf模板引擎整合及基本用法总结(一) 模板引擎引入Thymeleaf内置方法常用标签 (一) 模板引擎引入 (1) 开发方式 在往常的开发中,一旦涉及到一个完整的前后端项目,有两种办法: 一种就是前后端分离,也就是说,约定好接口,通过异步方式,以 Json 字符串作为内容传递,后台进行一些业务逻辑,前台负责界面,以及通过 js 等进行数据的处理以及页面的美化。 还有一种方式就是模板引擎的方式,这种方式也没什么太新奇的,你可以简单的理解为 JSP 的那种模式 现在来说,

WLF4188的博客 770

springboot怎么替代jsp_(五) SpringBoot起飞之路-Thymeleaf模板引擎整合及基本用法总结...

兴趣的朋友可以去了解一下前四篇,你的赞就是对我最大的支持,感谢大家!BWH.Steven:SpringBoot起飞之路-HelloWorld (一)​zhuanlan.zhihu.comBWH.Steven:SpringBoot起飞之路-入门原理分析(二)​zhuanlan.zhihu.comBWH.Steven:(三) SpringBoot起飞之路-YAML配置小结(入门必知必会)​zhuanl...

weixin_39811101的博客 519

Thymeleaf模板引擎从入门到实战:Spring Boot整合与核心用法详解

本文全面介绍Thymeleaf模板引擎的核心功能与Spring Boot整合实践,涵盖数据绑定、条件循环、表单处理等关键特性。通过代码示例演示从基础语法到文件模板的进阶使用,详解Spring Boot自动配置原理及常用配置项,并给出Controller与模板交互的完整开发流程,帮助开发者快速掌握现代化Java Web页面渲染技术。

m0_73941339的博客 2698

springboot--Thymeleaf模板引擎的用法

其实Thymleaf与jsp一样都是一个模板引擎,都可以动态的写入值,与后端进行交互,但是springboot并不支持jsp,所以我们需要学习Thymeleaf 要用Thymeleaf 就需要引用依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId></

java_Trainees的博客 231

(五) SpringBoot起飞之路-Thymeleaf模板引擎整合及基本用法总结

兴趣的朋友可以去了解一下前四篇,你的赞就是对我最大的支持,感谢大家! (一) SpringBoot起飞之路-HelloWorld (二) SpringBoot起飞之路-入门原理分析 (三) SpringBoot起飞之路-YAML配置小结(入门必知必会) (四) SpringBoot起飞之路-静态资源处理、 说明: 太忙啦,同时全放到一起,后来感觉移动端篇幅太长,阅读体验太差了,就打算分成几篇来发 才疏学浅,就会点浅薄的知识,大家权当一篇工具文来看啦,不喜勿愤哈 ~ (一) 模板引擎引入 (1) 开发.

理想二旬不止 - 专注JAVA技术 1280

spring boot 中thymeleaf 模板引擎常见用法

以下是thymeleaf 常用写法: 控制器端变量渲染到模板写法 控制器方法需要一个ModelMap来传递变量 @Controller public class Hello { @GetMapping(value="/hello") public String index(ModelMap map){ map.addAttribute("msg","this is a message"); return "hello"; } } 模板写法 &lt

zdt888的博客 181

Spring Boot 模板引擎 Thymeleaf 高阶用法 2-5

上一课我们介绍了 Thymeleaf 最常用的使用语法,这一课我们继续学习 Thymeleaf 高阶的使用方式,并对这些使用方式进行总结分类。其实上一课的内容,基本可以满足 Thymeleaf 80% 的使用场景,高阶用法会在某些场景下提供更高效、便捷的使用方式。 内联[[]] 如果不想通过 th 标签而是简单地访问 model 对象数据,或是想在 javascript 代码块里访问 mode...

qq_34227896的博客 1万+
上一篇: 定义一个类实现comparable接口用sort排序
java_hwy
博客等级 码龄8年 6粉丝 16原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值