Thymeleaf將字串轉換為數字

newknight發表於2022-03-07

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;
  }
}

前端呼叫:

 

 檢視結果:

 

相關文章