为解决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;
DecimalFormat;
/**
* Created by clyan on 2019/10/23 10:08.
*/
public class FormatUtil {
/**
* double⼩数点格式化
* @param value
* @return
*/
public static String valueFormat(double value) {
bigdecimal格式化两位小数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).)}"
aria-label="Text input with checkbox"/>
即,采⽤thymeleaf框架的${T(fullclasspath).function()}接⼝解决,结果如下:
⾄此,thymeleaf框架调⽤Java静态⽅法的思路已经实现,那么thymeleaf框架能否调⽤Java实例⽅法呢?经过实践发现,也是没问题的。
⽅法⼆:thymeleaf调⽤Java实例⽅法:
实例⽅法:
package com.hw.ibweb.util;
import t.annotation.Bean;
import org.springframework.stereotype.Component;
import java.math.BigDecimal;
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().)}"                                                          aria-label="Text input with checkbox"/>
最终能效果也如预期:
⾄此,完整解决double数值格式化问题。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。

发表评论