一、問題描述
今天做項目時,使用到了layui的數據表格功能,這里給大家安利一下layui,確實好用,對沒有太多前端經驗的新手來說(比如我)很友好。
下面開始說問題:我項目后端有一個包含Long型數據的實體類,前端使用layui數據表格,發送ajax請求進行數據回顯。
數據表中正確的數據為:
而到了前端layui數據表格里回顯之后就變成了:
發生了精度丟失,關於精度丟失的問題,網上資料很多,很明顯精度丟失這個鍋要拋給js,因為layui畢竟也是拿js做的。
js為什么會發生精度丟失?參考這篇博客https://www.cnblogs.com/littlestart/p/6023976.html
二、解決方案
1.如果沒有用到layui,而是自己手寫js傳參,那么就可以在前端動動手腳,將數據轉為字符串就行。這種情況我也遇到過,詳細解決方案,教程很多。
2.這里說明一下使用layui 數據表格時,遇到這種情況怎么辦:
1) 我也看了目前Lay fly論壇上關於這個問題,各個用戶的解決方案,主要就是讓你去改后端實體類字段類型,將字段類型改為String,這種方式也可取,可以從根本上解決問題。
2)但是當我遇到這個問題時,項目都快完成了,讓我去一個個改字段,更何況有些業務還需要到Long型數據,實在太麻煩了。於是難道我要去改layui.js?(layui的js文件),這種方式我也不想去過多考慮,因為怕改了之后,其他地方出現連鎖問題。最后,我從網上看到了其他的解決方案(既不需要改前端,也不要改后端):
a)使用fastjson,導入fastjson包
導包的時候請注意:不要使用1.2以下的fastjson版本
b)在需要將Long型轉化為String類型的字段上添加注解(在進行json序列化時會自動發生轉化):
注意:這個注解包含兩個類,導包時不要導錯了,如果項目中還有jackson依賴,可能會導包導成了:
這樣就可以將問題解決了。