Thymeleaf将字符串转换为数字
Thymeleaf将字符串转换为数字!
近期努力敲代码的时候遇到一个问题,某个字段在后端使用的是String存储,但是前端thymeleaf模板需要使用这个字段做数字加减,因为是字符串所以变成了字符串的相加(比如:'1'+'1'='11'),如果此时更改后端较为麻烦,还需要更改数据库,只能想办法转换一下。
网上查找没有相关资料且质量堪忧,所以自己写一篇文章希望可以帮助到有需要的人,特此记录。
问题截图:

代码截图:

起初以为Thymeleaf有提供Integer的内置供我们进行类型转换,但是找了一圈文档发现都没有此内置对象也没有相应的方法,最后苦苦琢磨总结了以下
三种解决方法:
第一种:
简单粗暴直接在后端实体类转换(偶尔使用没问题,多次建议使用第三种):
private String startRow;
public String getStartRow(){return startRow;}
public Integer getStartRow(){
return startRow!=null&&startRow.length>0?Integer.valueof(startRow):0;
}
前端使用 startRowNum 获取值

再查看结果发现显示已经正常了

第二种:
使用thymeleaf的内置对象#numbers.sequence()方法
该方法会生成一个数字数组返回,因为限制了起始数字和结束数字,所以只会返回长度为1的数组,再使用第一个元素相加即可(不太推荐,太麻烦且性能不好)

第三种:
直接在后端定义一个工具类,并托管到Spring容器中,前端使用${@MyUtils.toInteger()}调用方法即可(推荐使用此种方法,多次使用时还方便维护)
工具类:
package com.tension.common.utils;
import org.springframework.stereotype.Component;
import org.springframework.util.StringUtils;
@Component
public class MyIntegerUtils {
public static Integer toInteger(String str){
if(StringUtils.hasLength(str)){
return Integer.valueOf(str);
}
return 0;
}
}
前端调用:

查看结果:



当在Thymeleaf模板中需要将字符串字段用于数值运算时,遇到了字符串相加的问题。本文介绍了三种方法来解决这个问题:1) 在后端实体类中直接转换;2) 使用Thymeleaf的#numbers.sequence()方法;3) 定义后端工具类并托管到Spring容器,前端通过工具类方法调用转换。推荐使用第三种方法,因为它在多次使用时更便于维护。

1378

被折叠的 条评论
为什么被折叠?



