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; } }
前端呼叫:
檢視結果: