为解决Thymeleaf数字格式化问题而想到的几种方案
背景:
spring后端输出double类型数据,前端使用thymeleaf框架,格式化double数据类型,由于需要显示原值(比如原来录入5,而不能显示5.00),因此需要存储数值(存储值为decimal类型,其中2位小数)小数点后面进行去零处理,而不能采用thymeleaf本身的格式化方式。
思路:
1.尝试thymeleaf本身自带函数解决,未果(thymeleaf本身方法处理无法去除小数点后面的0,只能显示固定的小数点位数)。
2.采用JS解决,感觉有些麻烦,而且与thymeleaf结合也较困难,作罢。
3.由于Java端比较擅长处理数值格式化问题,而thymeleaf也正巧在服务端完成解析标签工作,那么能否让thymeleaf框架调用Java方法呢?理论上是可行的,经过不断实践,终于实验成功。
4.扩展thymeleaf标签
经过对比发现,方法3实现较简单,具体做法如下:
实现方法:
方法1:thymeleaf框架调用Java静态方法:
编写一个Java类,里面写一个静态方法,用于处理double类型数据格式化,返回字符串。详细代码如下:
package com.hw.ibweb.util; import org.apache.http.util.TextUtils; import java.math.BigDecimal;
import java.text.DecimalFormat; /**
* Created by clyan on 2019/10/23 10:08.
*/
public class FormatUtil { /**
* double小数点格式化
* @param value
* @return
*/
public static String valueFormat(double value) {
DecimalFormat df = new DecimalFormat("#####.##");
String xs = df.format(new BigDecimal(value));
return xs;
}
}
然后,在相关html中,采用如下写法:
<input type="text" class="form-control" width="250px" maxlength="6"
placeholder="最长6位数字"
name="code" th:attr="id=${item.dcitCode}"
th:value="${T(com.hw.ibweb.util.FormatUtil).valueFormat(item.money)}"
aria-label="Text input with checkbox"/>
即,采用thymeleaf框架的${T(fullclasspath).function()}接口解决,结果如下:

至此,thymeleaf框架调用Java静态方法的思路已经实现,那么thymeleaf框架能否调用Java实例方法呢?经过实践发现,也是没问题的。
方法二:thymeleaf调用Java实例方法:
实例方法:
package com.hw.ibweb.util; import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Component; import java.math.BigDecimal;
import java.text.DecimalFormat; /**
* Created by clyan on 2019/10/10 11:57.
*/ public class bbb { public String valueFormat(double value) {
DecimalFormat df = new DecimalFormat("#####.##");
String xs = df.format(new BigDecimal(value));
return xs;
}
}
在html页面中,调用该方法写法如下:
<input type="text" class="form-control" width="250px" maxlength="6"
placeholder="最长6位数字"
name="code" th:attr="id=${item.dcitCode}"
th:value="${new com.hw.ibweb.util.bbb().valueFormat(item.money)}"
aria-label="Text input with checkbox"/>
最终能效果也如预期:

至此,完整解决double数值格式化问题。
为解决Thymeleaf数字格式化问题而想到的几种方案的更多相关文章
- js 实现数字格式化(货币格式)几种方法
// 方法一 function toThousands(num) { var result = [ ], counter = 0; num = (num || 0).toString().split( ...
- 解决 Vue 项目 invalid host header 问题(两种方案)
问题出现背景 做微信H5网页时,使用花生壳内网穿透进行调试时,打开网页显示:invalid host header 分析问题 这句话的意思是:无效的Host请求头: 因为在vue在调试时相当于启动了一 ...
- 使用 .toLocaleString() 轻松实现多国语言价格数字格式化
用代码对数字进行格式化,显然不是逢三位加逗号这么简单.比如印度在数字分位符号上的处理,就堪称业界奇葩: 印度的数字读法用“拉克”(十万)和“克若尔”(千万),数字标法用不对称的数位分离,即小数点左侧首 ...
- Java学习笔记 06 数字格式化及数学运算
一.数字格式化 DecimalFormat类 >>DecimalFormat是NumberFormat的子类,用于格式化十进制数,可以将一些数字格式化为整数.浮点数.百分数等.通过使用该类 ...
- spring mvc4的日期/数字格式化、枚举转换
日期.数字格式化显示,是web开发中的常见需求,spring mvc采用XXXFormatter来处理,先看一个最基本的单元测试: package com.cnblogs.yjmyzz.test; i ...
- 数字格式化函数:Highcharts.numberFormat()
(转)数字格式化函数:Highcharts.numberFormat() 一.函数说明 该函数用于图表中数值的格式化,常见用途有数值精度控制.小数点符.千位符显示控制等. 二.函数使用 1.函 ...
- php实现数字格式化,数字每三位加逗号的功能函数
原地址:http://www.jb51.net/article/73781.htm php实现数字格式化,数字每三位加逗号的功能函数,具体代码如下: ? 1 2 3 4 5 6 7 8 9 10 11 ...
- (转)数字格式化函数:Highcharts.numberFormat()
一.函数说明 该函数用于图表中数值的格式化,常见用途有数值精度控制.小数点符.千位符显示控制等. 二.函数使用 1.函数构造及参数 Highcharts.numberFormat (Numbe ...
- PHP数字格式化,每三位逗号分隔数字,可以保留小数
在报价的时候为了给浏览者更清晰明确的数字,所以需要用到数字格式化,有两种方法,一种自己写函数,另一种当然是系统自带的,其实我更喜欢系统自带的. 先来系统简单的: string number_forma ...
随机推荐
- SSD源码解读——数据读取
之前,对SSD的论文进行了解读,可以回顾之前的博客:https://www.cnblogs.com/dengshunge/p/11665929.html. 为了加深对SSD的理解,因此对SSD的源码进 ...
- Ubuntu环境变量设置注意点
设置环境变量时,有一点要注意: /etc/bash.bashrc与/etc/profile是有区别的 什么区别呢? 打开一个新的shell时,会读取/etc/bash.bashrc和~/.bashrc ...
- Settimer及回调函数的用法
在网上看了settimer的一些用法发现能用的真没有,,,,可能是我没找对地方,大部分都是无脑复制粘贴,浪费了很多时间,如果你是一个对这种定时器一无所知的小白,那么请你看进来一定不会让你失望的! 实用 ...
- 牛客练习赛46 C 华华跟奕奕玩游戏 (期望,概率)(详解)
链接:https://ac.nowcoder.com/acm/contest/894/C 来源:牛客网 华华跟奕奕玩游戏 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 524288K ...
- 阅读之MySQL数据库分表
移动互联网时代,海量的用户数据每天都在产生,基于用户使用数据等这样的分析,都需要依靠数据统计和分析,当数据量小时,数据库方面的优化显得不太重要,一旦数据量越来越大,系统响应会变慢,TPS直线下降,直至 ...
- c语言中"->"和"."的区别
对于c语言中"->"和"."的区别总结如下: 1.A.B则A为对象或者结构体: 2.A->B则A为指针,->是成员提取,A->B是提取A ...
- FJOI2017前做题记录
FJOI2017前做题记录 2017-04-15 [ZJOI2017] 树状数组 问题转化后,变成区间随机将一个数异或一,询问两个位置的值相等的概率.(注意特判询问有一个区间的左端点为1的情况,因为题 ...
- 导数与微分简单总结(updated)
只讲一些导数在OI中的简单应用,特别基础的东西,不会很详细也不会很全面. 导数的定义 设函数\(y=f(x)\)在点\(x_0\)的某个邻域内有定义,当自变量\(x\)在\(x_0\)处有增量\(Δx ...
- Android_(游戏)打飞机02:游戏背景滚动
(游戏)打飞机01:前言 传送门 (游戏)打飞机02:游戏背景滚动 传送门 (游戏)打飞机03:控制玩家飞机 传送门 (游戏)打飞机04:绘画敌机.添加子弹 传送门 (游戏)打飞机05:处理子弹, ...
- less基本用法:持续归纳中
todo 1,嵌套语法:https://www.w3cschool.cn/less/nested_directives_bubbling.html 简单来说就是可以与html一样去写css,并且会继承 ...