欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Thymeleaf对象的使用:数字对象

程序员文章站 2022-06-24 10:00:58
Thymeleaf主要使用 org.thymeleaf.expression.Numbers 类处理数字,在模板中使用 #numbers 对象来处理数字。 一、整数格式化 二、小数格式化 三、百分比格式化 四、sequence方法 ......

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

开发环境:intellij idea 2019.2.2
spring boot版本:2.1.8

新建一个名称为demo的spring boot项目。
pom.xml加入thymeleaf依赖:

        <dependency>
            <groupid>org.springframework.boot</groupid>
            <artifactid>spring-boot-starter-thymeleaf</artifactid>
        </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

formatinteger(number,digits)
<div th:text="${#numbers.formatinteger(10,0)}"></div>
<div th:text="${#numbers.formatinteger(10.6,2)}"></div>
<div th:text="${#numbers.formatinteger(10.6,5)}"></div>
<div th:text="${#numbers.formatinteger(10.50,0)}"></div>
<div th:text="${#numbers.formatinteger(10.51,2)}"></div>
<div th:text="${#numbers.formatinteger(10000000,0,'comma')}"></div>
<div th:text="${#numbers.formatinteger(10000000,0,'point')}"></div>

arrayformatinteger(numbers,digits)
<div th:each="num : ${#numbers.arrayformatinteger(arr,0)}">
    <div th:text="${num}"></div>
</div>
listformatinteger(numbers,digits)
<div th:each="num : ${#numbers.listformatinteger(list,2)}">
    <div th:text="${num}"></div>
</div>
setformatinteger(numbers,digits)
<div th:each="num : ${#numbers.setformatinteger(set,4)}">
    <div th:text="${num}"></div>
</div>

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

package com.example.demo;

import org.springframework.stereotype.controller;
import org.springframework.ui.model;
import org.springframework.web.bind.annotation.requestmapping;

import java.util.arrays;
import java.util.hashset;
import java.util.list;
import java.util.set;

@controller
public class integercontroller {
    @requestmapping("/integer")
    public string integer(model model){
        double[] arr = new double[]{10d, 10.9};
        list list = arrays.aslist(arr);
        set set = new hashset(list);
        model.addattribute("arr", arr);
        model.addattribute("list", list);
        model.addattribute("set", set);
        return "integer";
    }
}

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

formatinteger(number,digits)
10
11
00011
10
11
10,000,000
10.000.000
arrayformatinteger(numbers,digits)
10
11
listformatinteger(numbers,digits)
10
11
setformatinteger(numbers,digits)
0010
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

<div th:text="${#numbers.formatdecimal(10, 0, 0)}"></div>
<div th:text="${#numbers.formatdecimal(10.6, 0, 2)}"></div>
<div th:text="${#numbers.formatdecimal(10.6, 5, 2)}"></div>
<div th:text="${#numbers.formatdecimal(10000000, 0, 2, 'comma')}"></div>
<div th:text="${#numbers.formatdecimal(10000000, 2, 2, 'point')}"></div>
<div th:text="${#numbers.formatdecimal(10000000, 2, 'point', 2, 'point')}"></div>

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

package com.example.demo;

import org.springframework.stereotype.controller;
import org.springframework.web.bind.annotation.requestmapping;

@controller
public class decimalcontroller {
    @requestmapping("/decimal")
    public string decimal(){
        return "decimal";
    }
}

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

10
10.60
00010.60
10000000,00
10000000.00
10.000.000.00

三、百分比格式化

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

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

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

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

package com.example.demo;

import org.springframework.stereotype.controller;
import org.springframework.web.bind.annotation.requestmapping;

@controller
public class percentcontroller {
    @requestmapping("/percent")
    public string percent(){
        return "percent";
    }
}

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

12.30%
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

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

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

package com.example.demo;

import org.springframework.stereotype.controller;
import org.springframework.web.bind.annotation.requestmapping;

@controller
public class sequencecontroller {
    @requestmapping("/sequence")
    public string sequence(){
        return "sequence";
    }
}

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

0
1
2
3
----------
5
4
3
2
1