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; } }
前端調用:
查看結果: