一、问题场景
前端从后端返回的数据中取出一条数据的id,然后把id再次传给后端去调用别的方法,此时id变了,1750775455104835585变成了1750775455104835000,这其实是因为后端Long类型的精度要比前端高一点,导致精度丢失了
二、解决方案
2.1 后端加注解(实测成功)
**在前端取id的地方,在id上加上注解: @JsonSerialize(using = ToStringSerializer.class) **
比如,我这里是前端从分页查询列表中取的id,我就在分页查询结果类的id上加注解,这样前端取的时候id就会被序列化成String,避免精度丢失问题,后端还是Long
PS:一般环境下基础代码都是生成的,很多会直接有这个注解
如果后端返回是个结果类可以加注解,如果是单独的一个id,就需要通过修改前端
2.2 前端修改
在前端接收数据处增加以下代码,对接收的id不作转换
{
transformResponse: [
function (data){
return data;
}
]
}
三、结束
网上有许多通过配置类的方法,但我实测都未成功,后期再寻找更多方法!!!
任何疑问,欢迎私信指教!!!
分享:
能否把你比作夏日璀璨? 你却比夏季更可爱温存;
狂风摧残五月花蕊娇妍, 夏天匆匆离去毫不停顿。
苍天明眸有时过于灼热, 金色面容往往蒙上阴翳;
一切优美形象不免褪色, 偶然摧折或自然地老去。
而你如仲夏繁茂不凋谢, 秀雅风姿将永远翩翩;
死神无法逼你气息奄奄, 你将永生与不朽诗篇。
只要人能呼吸眼不盲, 这诗和你将千秋流芳!