文档章节

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

二十岁以后
 二十岁以后
发布于 2017/08/08 11:39
字数 779
阅读 396
收藏 1

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;

 

© 著作权归作者所有

共有 人打赏支持
二十岁以后
粉丝 229
博文 25
码字总数 23016
作品 0
海淀
架构师
私信 提问
template might not exist or might not be accessible by any of the configured Template Resolvers

距离上一篇文章已经很长时间了,最近太忙碌了,今天发布spring boot遇到一个问题,找了好久才找到解决办法,今天贴出来和大家一起分享下,首先看错误信息 1 HTTP Status 500 - Request proc...

luckyboys
2017/05/06
0
0
Spring Boot 2.0干货系列:(一)Spring Boot1.5X升级到2.0指南

前言 Spring Boot已经发布2.0有4个月多,多了很多新特性,一些坑也慢慢被填上,最近有空,就把本博客中Spring Boot干货系列对应的源码从1.5X升级到Spring Boot 2.0,顺便整理下升级的时候遇到...

嘟爷MD
07/24
0
0
批量修改mysql表、表、数据库的字符校对规则

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

IT_小翼
2015/09/17
891
0
JFinal有没有注解Action参数的插件

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

CapJes
2016/07/03
1K
16

没有更多内容

加载失败,请刷新页面

加载更多

EOS docker开发环境

使用eos docker镜像是部署本地EOS开发环境的最轻松愉快的方法。使用官方提供的eos docker镜像,你可以快速建立一个eos开发环境,可以迅速启动开发节点和钱包服务器、创建账户、编写智能合约....

汇智网教程
31分钟前
2
0
《唐史原来超有趣》的读后感优秀范文3700字

《唐史原来超有趣》的读后感优秀范文3700字: 作者:花若离。我今天分享的内容《唐史原来超有趣》这本书的读后感,我将这本书看了一遍之后就束之高阁了,不过里面的内容一直在在脑海中回放,...

原创小博客
56分钟前
6
0
IC-CAD Methodology知识图谱

CAD (Computer Aided Design),计算机辅助设计,指利用计算机及其图形设备帮助设计人员进行设计工作,这个定义同样可以用来近似描述IC公司CAD工程师这个岗位的工作。 早期IC公司的CAD岗位最初...

李艳青1987
今天
6
0
CompletableFuture get方法一直阻塞或抛出TimeoutException

问题描述 最近刚刚上线的服务突然抛出大量的TimeoutException,查询后发现是使用了CompletableFuture,并且在执行future.get(5, TimeUnit.SECONDS);时抛出了TimeoutException异常,导致接口响...

xiaolyuh
今天
5
0
dubbo 搭建与使用

官网:http://dubbo.apache.org/en-us/ 一,安装监控中心(可以不安装) admin管理控制台,monitor监控中心 下载 bubbo ops 这个是新版的,需要node.js环境,我没有就用老版的了...

小兵胖胖
今天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部