Thymeleaf將字符串轉換為數字


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

前端調用:

 

 查看結果:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM