Thymeleaf主要使用 org.thymeleaf.expression.Numbers 类处理数字,在模板中使用 #numbers 对象来处理数字。

开发环境:IntelliJ IDEA 2019.2.2
Spring Boot版本:2.1.8

新建一个名称为demo的Spring Boot项目。
pom.xml加入Thymeleaf依赖:

  1. <dependency>
  2. <groupId>org.springframework.boot</groupId>
  3. <artifactId>spring-boot-starter-thymeleaf</artifactId>
  4. </dependency>

一、整数格式化

有4个方法:
(1)formatInteger(number,digits)
第一个参数为单个数字,如果有小数字点则四舍五入,第二个参数设置最少的整数位数,不足会补0(下同)
(2)arrayFormatInteger(numbers,digits)
传入数组,返回处理后的数组
(3)listFormatInteger(numbers,digits)
传入List,返回处理后的List
(4)setFormatInteger(numbers,digits)
传入Set,返回处理后的Set
这4个方法存在重载方法传入第三个参数,用于标识千位分隔符
POINT : 使用“.”
COMMA : 使用“,”
WHITESPACE : 使用“ ”(空格)
NONE : 不使用分隔符
DEFAULT : 根据Locale对象来决定

1、src/main/resources/templates/integer.html

  1. formatInteger(number,digits)
  2. <div th:text="${#numbers.formatInteger(10,0)}"></div>
  3. <div th:text="${#numbers.formatInteger(10.6,2)}"></div>
  4. <div th:text="${#numbers.formatInteger(10.6,5)}"></div>
  5. <div th:text="${#numbers.formatInteger(10.50,0)}"></div>
  6. <div th:text="${#numbers.formatInteger(10.51,2)}"></div>
  7. <div th:text="${#numbers.formatInteger(10000000,0,'COMMA')}"></div>
  8. <div th:text="${#numbers.formatInteger(10000000,0,'POINT')}"></div>
  9.  
  10. arrayFormatInteger(numbers,digits)
  11. <div th:each="num : ${#numbers.arrayFormatInteger(arr,0)}">
  12. <div th:text="${num}"></div>
  13. </div>
  14. listFormatInteger(numbers,digits)
  15. <div th:each="num : ${#numbers.listFormatInteger(list,2)}">
  16. <div th:text="${num}"></div>
  17. </div>
  18. setFormatInteger(numbers,digits)
  19. <div th:each="num : ${#numbers.setFormatInteger(set,4)}">
  20. <div th:text="${num}"></div>
  21. </div>

2、src/main/java/com/example/demo/IntegerController.java

  1. package com.example.demo;
  2.  
  3. import org.springframework.stereotype.Controller;
  4. import org.springframework.ui.Model;
  5. import org.springframework.web.bind.annotation.RequestMapping;
  6.  
  7. import java.util.Arrays;
  8. import java.util.HashSet;
  9. import java.util.List;
  10. import java.util.Set;
  11.  
  12. @Controller
  13. public class IntegerController {
  14. @RequestMapping("/integer")
  15. public String integer(Model model){
  16. Double[] arr = new Double[]{10D, 10.9};
  17. List list = Arrays.asList(arr);
  18. Set set = new HashSet(list);
  19. model.addAttribute("arr", arr);
  20. model.addAttribute("list", list);
  21. model.addAttribute("set", set);
  22. return "integer";
  23. }
  24. }

浏览器访问:http://localhost:8080/integer
页面输出:

  1. formatInteger(number,digits)
  2. 10
  3. 11
  4. 00011
  5. 10
  6. 11
  7. 10,000,000
  8. 10.000.000
  9. arrayFormatInteger(numbers,digits)
  10. 10
  11. 11
  12. listFormatInteger(numbers,digits)
  13. 10
  14. 11
  15. setFormatInteger(numbers,digits)
  16. 0010
  17. 0011

二、小数格式化

同样有4个方法:
(1)formatDecimal(number,intDig,decDig)
第一个参数为单个数字,第二个参数设置最少的整数位数(不足会补0),第三个参数设置保留小数位数
(2)arrayFormatDecimal(numArray,intDig,decDig)
传入数组,返回处理后的数组
(3)listFormatDecimal(numList,intDig,decDig)
传入List,返回处理后的List
(4)setFormatDecimal(numSet,intDig,decDig)
传入Set,返回处理后的Set
这4个方法都存在两个重载方法,以formatDecimal为例:
(a)formatDecimal(number,intDig,decDig,decPoint)
decPoint表示用什么符号作为小数点,取值为POINT、COMMA、WHITESPACE、NONE和DEFAULT。
(b)formatDecimal(number,intDig,separator,decDig,decPoint)
separator表示用什么符号作为千位分隔符,同样取值为POINT、COMMA、WHITESPACE、NONE和DEFAULT。

1、src/main/resources/templates/decimal.html

  1. <div th:text="${#numbers.formatDecimal(10, 0, 0)}"></div>
  2. <div th:text="${#numbers.formatDecimal(10.6, 0, 2)}"></div>
  3. <div th:text="${#numbers.formatDecimal(10.6, 5, 2)}"></div>
  4. <div th:text="${#numbers.formatDecimal(10000000, 0, 2, 'COMMA')}"></div>
  5. <div th:text="${#numbers.formatDecimal(10000000, 2, 2, 'POINT')}"></div>
  6. <div th:text="${#numbers.formatDecimal(10000000, 2, 'POINT', 2, 'POINT')}"></div>

2、src/main/java/com/example/demo/DecimalController.java

  1. package com.example.demo;
  2.  
  3. import org.springframework.stereotype.Controller;
  4. import org.springframework.web.bind.annotation.RequestMapping;
  5.  
  6. @Controller
  7. public class DecimalController {
  8. @RequestMapping("/decimal")
  9. public String decimal(){
  10. return "decimal";
  11. }
  12. }

浏览器访问:http://localhost:8080/decimal
页面输出:

  1. 10
  2. 10.60
  3. 00010.60
  4. 10000000,00
  5. 10000000.00
  6. 10.000.000.00

三、百分比格式化

和小数的格式化类似,同样有4个方法,其中处理单个数字用
formatPercent(number,intDig,decDig)
第一个参数为单个数字,第二个参数设置最少的整数位数(不足会补0),第三个参数设置保留小数位数

1、src/main/resources/templates/percent.html

  1. <div th:text="${#numbers.formatPercent(0.123, 0, 2)}"></div>
  2. <div th:text="${#numbers.formatPercent(0.123, 5, 2)}"></div>

2、src/main/java/com/example/demo/PercentController.java

  1. package com.example.demo;
  2.  
  3. import org.springframework.stereotype.Controller;
  4. import org.springframework.web.bind.annotation.RequestMapping;
  5.  
  6. @Controller
  7. public class PercentController {
  8. @RequestMapping("/percent")
  9. public String percent(){
  10. return "percent";
  11. }
  12. }

浏览器访问:http://localhost:8080/percent
页面输出:

  1. 12.30%
  2. 00,012.30%

四、sequence方法

sequence方法返回Integer数组。
(1)sequence(from,to)
设置开始值与结束值,如果from比to大,则默认步长为1,否则为-1。
(2)sequence(from,to,step)
设置开始值与结束值,步长。

1、src/main/resources/templates/sequence.html

  1. <div th:each="num : ${#numbers.sequence(0,3)}">
  2. <div th:text="${num}"></div>
  3. </div>
  4. ----------
  5. <div th:each="num : ${#numbers.sequence(5,1)}">
  6. <div th:text="${num}"></div>
  7. </div>

2、src/main/java/com/example/demo/SequenceController.java

  1. package com.example.demo;
  2.  
  3. import org.springframework.stereotype.Controller;
  4. import org.springframework.web.bind.annotation.RequestMapping;
  5.  
  6. @Controller
  7. public class SequenceController {
  8. @RequestMapping("/sequence")
  9. public String sequence(){
  10. return "sequence";
  11. }
  12. }

浏览器访问:http://localhost:8080/percent
页面输出:

  1. 0
  2. 1
  3. 2
  4. 3
  5. ----------
  6. 5
  7. 4
  8. 3
  9. 2
  10. 1

Thymeleaf对象的使用:数字对象的更多相关文章

  1. Thymeleaf对象的使用:日期对象

    Thymeleaf在模板中使用 #dates 或 #calendars 两个对象来处理日期,这两个对象大部分类似. 开发环境:IntelliJ IDEA 2019.2.2Spring Boot版本:2 ...

  2. Thymeleaf对象的使用:字符串对象

    Thymeleaf主要使用 org.thymeleaf.expression.Strings 类处理字符串,在模板中使用 #strings 对象来处理字符串. 开发环境:IntelliJ IDEA 2 ...

  3. Thymeleaf对象的使用:基本对象

    Thymeleaf中有许多内置对象,可以在模板中实现各种功能.下面有几个基本对象.Web对象常用有:request.session.servletContext.Thymeleaf提供了几个内置变量p ...

  4. thymeleaf学习

    一.简单表达格式:   thymeleaf的官方参考文档 1.变量的表达式:${...} 2.选择变量表达式:*{...} 3.信息表达:#{...} 4.链接URL表达式:@{...} 二.字面值 ...

  5. thymeleaf 基础

    (一)Thymeleaf 是个什么?      简单说, Thymeleaf 是一个跟 Velocity.FreeMarker 类似的模板引擎,它可以完全替代 JSP .相较与其他的模板引擎,它有如下 ...

  6. thymeleaf(一)

    (一)Thymeleaf 是个什么?      简单说, Thymeleaf 是一个跟 Velocity.FreeMarker 类似的模板引擎,它可以完全替代 JSP .相较与其他的模板引擎,它有如下 ...

  7. Thymeleaf 学习笔记

    (一)Thymeleaf 是个什么? 简单说, Thymeleaf 是一个跟 Velocity.FreeMarker 类似的模板引擎,它可以完全替代 JSP .相较与其他的模板引擎,它有如下三个极吸引 ...

  8. 第6章—渲染web视图—SpringMVC+Thymeleaf 处理表单提交

    SpringMVC+Thymeleaf 处理表单提交 thymleaf处理表单提交的方式和jsp有些类似,也有点不同之处,这里操作一个小Demo,并说明: 1.demo的结构图如下所示: pom.xm ...

  9. thymeleaf 学习笔记-基础篇(中文教程)

    (一)Thymeleaf 是个什么?      简单说, Thymeleaf 是一个跟 Velocity.FreeMarker 类似的模板引擎,它可以完全替代 JSP .相较与其他的模板引擎,它有如下 ...

随机推荐

  1. Linux 使用grep过滤多个条件及grep常用过滤命令

    这篇文章主要介绍了Linux 使用grep筛选多个条件及grep常用过滤命令,需要的朋友可以参考下 cat log.txt | grep 条件: cat log.txt | grep 条件一 | gr ...

  2. Graylog 环境搭建与使用

    graylog 官网地址: www.graylog.org graylog 简易架构图: graylog 生产架构图: graylog 有两个版本,1.企业版:2.开源版 下面使用开源版本搭建日志中心 ...

  3. linux服务器JDK1.8环境变量配置

    1. 场景描述 软件老王年龄大了,新机器(Linxu)下,配置JDK环境变量老记不住,记录下,有需要的朋友参考下. 2. 解决方案 2.1 上传tar包 ftp上传tar包: jdk-8u181-li ...

  4. 详解串行通信协议及其FPGA实现

    前言 好久没更新博客了,这篇文章写写停停,用了近一周的时间,终于写完了.本篇文章介绍,串口协议数据帧格式.串行通信的工作方式.电平标准.编码方式及Verilog实现串口发送一个字节数据和接收一个字节数 ...

  5. 一泡尿的时间,快速读懂QUIC协议

    1.TCP协议到底怎么了? 现时的互联网应用中,Web平台(准确地说是基于HTTP及其延伸协议的客户端/服务器应用)的数据传输都基于 TCP 协议. 但TCP 协议在创建连接之前需要进行三次握手(如下 ...

  6. MySql报错(持续更新)

    目录 MySql报错 1. 重复键报错1062- duplicate entry '0' for key 'xxx' 1.1 报错场景 1.2 报错原因 1.3 解决方法 1.4 具体举例 2. VS ...

  7. Nexus-在项目中使用Maven私服,Deploy到私服、上传第三方jar包、在项目中使用私服jar包

    场景 Ubuntu Server 上使用Docker Compose 部署Nexus(图文教程): https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/ ...

  8. Angular--AOT和JIT两种编译方式带来的改变

    Angular 应用主要由组件及其 HTML 模板组成.由于浏览器无法直接理解 Angular 所提供的组件和模板,因此 Angular 应用程序需要先进行编译才能在浏览器中运行.Angular 提供 ...

  9. C# Excel 读取导入数据库

    使用Aspose.Cells组件. 表格第一行为表头合并,第二行为数据名称,从第三行开始数据. if (xtraOpenFileDialog1.ShowDialog() == DialogResult ...

  10. MQ脚本回放报错2059

    1.响应2059错误 1.1.   涉及协议 MQ,调试回放阶段 1.2.   错误信息 完成码2原因为2059:未能为 '10.200.100.75:QMEMBFE' 创建 MQQueueManag ...