文档章节

thymeleaf在工作中遇到的问题及解决办法(四)

二十岁以后
 二十岁以后
发布于 2017/08/08 11:39
字数 779
阅读 320
收藏 1
点赞 0
评论 0

1、关于字符串拼接的问题

        字符串拼接可以使用如下方式。

<a href="#" th:text="第+${StartNo}+页 +'    '+共+${countPage}+页">

        还有一种更优雅的方式,使用“||”减少了字符串的拼接,代码如下。

<a href="#" th:text="|第${StartNo}页     共${countPage}页|">

2、关于URL表达式中传参的问题

        这个问题也比较常遇到,比如想通过超链接删除数据库中某条数据,那么在超链接上就需要传入此数据的主键。如图,我要修改此用户那么就要在修改的超链接上把10064这个ID传进来。

超链接传参代码如下,需要注意Thymeleaf对URL进行渲染,务必使用th:href,th:src属性 。

<a class="border-main" th:href="@{userPower(id=${user.Id})}"><span class="edit"></span> 修改

几点需要说明:

  • 上例URL最后的(id=${user.Id})表示将括号内的内容作为URL参数处理,该语法避免使用字符串拼接,大大提高了可读性。
  • @{userPower}是Context相关的相对路径,在渲染时会自动添加上当前Web应用的Context名字,假设Context名字为Java,那么结果应该是/Java/userPower。

3、关于条件判断的补充

      前面介绍了if的用法,接下来介绍一个与if用法相同但表达相反的属性 th:unless ,两者都是条件判断,if表示表达式成立则执行动作,而unless表示表达式中的条件不成立,才会执行动作。

      thymeleaf还有一种类似Java中的三元运算符的用法,代码如下。

<input th:text="(${user.isAdmin}?'管理员':'普通用户')"></input>

4、关于特殊字符的转义

  • 比较: > , < , >= , <= ( gt , lt , ge , le )
  • 相等算法: == , != ( eq , ne )

5、关于一些其他的常用内置对象

Controller代码:

@RestController
public class IndexController {

    @PostMapping("toIndex")
    public String toIndex(Model model) {
        List<String> datas = new ArrayList<String>();
        datas.add("二十岁以后");
        datas.add("995600491");
        model.addAttribute("datas", datas);
        model.addAttribute("curDate", new Date());
        model.addAttribute("number", Math.random()*100);
        return "index";
    }
}

上面的代码,包含了工作中常使用的数据类型,有集合,时间类型,数值类型,下面我们使用thymeleaf的内置对象来解析他们。

  • 使用#lists.size来获取List的长度。
<span th:text="${#lists.size(datas)}"></span>
  • 对于日期的格式化,与java中的SimpleDateFormat类似,第一个参数是后台传来的key,第二个参数是设置日期的格式
<span th:text="${#dates.format(curDate, 'yyyy-MM-dd HH:mm:ss')}"></span>
  • 对于数值,我们可以对其这样操作。
<span th:text="${#numbers.formatDecimal(number, 0, 3)}"></span>

   解释:保留三位小数, 整数位自动。

<span th:text="${#numbers.formatDecimal(number,3,1)}"></span>

  解释: 保留1位小数位,3位整数位(不够的前面加0) 。

特别提示:

内置对象前都需要加#号。

内置对象一般都以s结尾。

其他常用内置对象:

#numbers: 数字格式化;

#strings:字符串格式化,参照java.lang.String;

#bools:判断boolean类型;

#lists:集合操作的工具,参照java.util.List;

#sets:Set集合操作工具,参照java.util.Set;

#maps:Map集合操作工具,参照java.util.Map; 

#dates:日期格式化,参照java.util.Date;

 

© 著作权归作者所有

共有 人打赏支持
二十岁以后
粉丝 227
博文 25
码字总数 23016
作品 0
海淀
架构师
批量修改mysql表、表、数据库的字符校对规则

记录一个在工作中遇到的问题,也不算是问题,为的是找一种简便的方法批量修改数据表字段的排序规则,在MySQL中叫collation,常常和编码CHARACTER一起出现的。collation有三种级别,分辨是数据...

IT_小翼 ⋅ 2015/09/17 ⋅ 0

springboot(十三):springboot小技巧

一些springboot小技巧、小知识点 初始化数据 我们在做测试的时候经常需要初始化导入一些数据,如何来处理呢?会有两种选择,一种是使用Jpa,另外一种是Spring JDBC。两种方式各有区别下面来详...

ityouknow ⋅ 2017/06/28 ⋅ 0

JFinal有没有注解Action参数的插件

在用SpringMVC的时候,发觉它的参数配置非常不错,所以经常在工作中中被用来对外提供Restful接口,特别是它的定义接口参数的required=true/false,对参数是否为空进行验证,很方便。 以前也用...

CapJes ⋅ 2016/07/03 ⋅ 16

你的知识死角不能否定你的技术能力

有些事情你不知道,但你一定能解决。 有些人通过我账号资料里的微信加我,然后问我一些所谓“怎么办”的问题,不是我不告诉你,而是我确实不知道。我确实有很高的title,也确实有很多的技术积...

caiyongji ⋅ 05/27 ⋅ 0

springboot(十五):springboot+jpa+thymeleaf增删改查示例

这篇文章介绍如何使用jpa和thymeleaf做一个增删改查的示例。 先和大家聊聊我为什么喜欢写这种脚手架的项目,在我学习一门新技术的时候,总是想快速的搭建起一个demo来试试它的效果,越简单越...

纯洁的虫纸 ⋅ 2017/09/26 ⋅ 0

idea使用spring-boot整合thymeleaf后无法从controller跳转到页面

之前用jsp倒是没问题, 可以直接点击旁边的图片跳转到jsp页面 但是使用了thymeleaf 后,方法边上的图标不见了,而且页面中的变量也没办法关联 有什么解决办法么? spring 模块我也添加到项目了:...

torykit ⋅ 2017/04/23 ⋅ 2

eclipse JNI项目迁移android studio相关问题

最近在弄项目迁移,eclipse上的项目用到了JNI,需要转移到android studio,本来对JNI就不太懂,这下更麻烦了,遇到各种问题,过程痛苦不堪。不过终于做完了,把遇到问题记录下来,同时也能让...

IT学无止境 ⋅ 2016/12/22 ⋅ 0

springboot(十五):springboot+jpa+thymeleaf增删改查示例

这篇文章介绍如何使用jpa和thymeleaf做一个增删改查的示例。 先和大家聊聊我为什么喜欢写这种脚手架的项目,在我学习一门新技术的时候,总是想快速的搭建起一个demo来试试它的效果,越简单越...

纯洁的微笑 ⋅ 2017/09/23 ⋅ 0

springboot(四):thymeleaf使用详解

在上篇文章springboot(二):web综合开发中简单介绍了一下thymeleaf,这篇文章将更加全面详细的介绍thymeleaf的使用。thymeleaf 是新一代的模板引擎,在spring4.0中推荐使用thymeleaf来做前端...

ityouknow ⋅ 2016/09/05 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

个人博客的运营模式能否学习TMALL天猫质量为上?

心情随笔|个人博客的运营模式能否学习TMALL天猫质量为上? 中国的互联网已经发展了很多年了,记得在十年前,个人博客十分流行,大量的人都在写博客,而且质量还不错,很多高质量的文章都是在...

原创小博客 ⋅ 41分钟前 ⋅ 0

JavaScript零基础入门——(十一)JavaScript的DOM操作

JavaScript零基础入门——(十一)JavaScript的DOM操作 大家好,欢迎回到我们的JavaScript零基础入门。最近有些同学问我说,我讲的的比书上的精简不少。其实呢,我主要讲的是我在开发中经常会...

JandenMa ⋅ 今天 ⋅ 0

volatile和synchronized的区别

volatile和synchronized的区别 在讲这个之前需要先了解下JMM(Java memory Model :java内存模型):并发过程中如何处理可见性、原子性、有序性的问题--建立JMM模型 详情请看:https://baike.b...

MarinJ_Shao ⋅ 今天 ⋅ 0

深入分析Kubernetes Critical Pod(一)

Author: xidianwangtao@gmail.com 摘要:大家在部署Kubernetes集群AddOn组件的时候,经常会看到Annotation scheduler.alpha.kubernetes.io/critical-pod"="",以表示这是一个关键服务,那你知...

WaltonWang ⋅ 今天 ⋅ 0

原子性 - synchronized关键词

原子性概念 原子性提供了程序的互斥操作,同一时刻只能有一个线程能对某块代码进行操作。 原子性的实现方式 在jdk中,原子性的实现方式主要分为: synchronized:关键词,它依赖于JVM,保证了同...

dotleo ⋅ 今天 ⋅ 0

【2018.06.22学习笔记】【linux高级知识 14.4-15.3】

14.4 exportfs命令 14.5 NFS客户端问题 15.1 FTP介绍 15.2/15.3 使用vsftpd搭建ftp

lgsxp ⋅ 今天 ⋅ 0

JeeSite 4.0 功能权限管理基础(Shiro)

Shiro是Apache的一个开源框架,是一个权限管理的框架,实现用户认证、用户授权等。 只要有用户参与一般都要有权限管理,权限管理实现对用户访问系统的控制,按照安全规则或者安全策略控制用户...

ThinkGem ⋅ 昨天 ⋅ 0

python f-string 字符串格式化

主要内容 从Python 3.6开始,f-string是格式化字符串的一种很好的新方法。与其他格式化方式相比,它们不仅更易读,更简洁,不易出错,而且速度更快! 在本文的最后,您将了解如何以及为什么今...

阿豪boy ⋅ 昨天 ⋅ 0

Python实现自动登录站点

如果我们想要实现自动登录,那么我们就需要能够驱动浏览器(比如谷歌浏览器)来实现操作,ChromeDriver 刚好能够帮助我们这一点(非谷歌浏览器的驱动有所不同)。 一、确认软件版本 首先我们...

blackfoxya ⋅ 昨天 ⋅ 0

线性回归原理和实现基本认识

一:介绍 定义:线性回归在假设特证满足线性关系,根据给定的训练数据训练一个模型,并用此模型进行预测。为了了解这个定义,我们先举个简单的例子;我们假设一个线性方程 Y=2x+1, x变量为商...

wangxuwei ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部