org.springframework.ui.Model addAttribute 长整型丢失精度

例如有一个用户类
publicclassUserimplementsSerializable{
privatestaticfinallongserialVersionUID=1L;
privateLongid;
privateStringusername;
//...省略get、set
}
我在跳转到编辑页面时,需要携带要编辑的用户信息。大概的代码如下:
@GetMapping("edit")
publicStringedit(Modelmodel,@RequestParamLongid){
model.addAttribute("entity",userService.findById(id));
return"user/edit";
}
那么此时问题就出来了。在页面“user/edit”上获取到的id,精度丢失了,例如本来是94105929343041536变成了94105929343041540。要怎么改,改动最小,才能获取到正确的长整型的id值呢?
小怪兽爱吃肉
浏览 465回答 2
2回答

小唯快跑啊

publicStringedit(Modelmodel,@RequestParamLongid){}改为publicStringedit(Modelmodel,@RequestParamStringid){}userService.findById(Long.valueOf(id)));

守着一只汪

JavaScript的number类型在处理大于9007199254740992的长整型时会丢失精度,可以以字符串的形式保存避免精度丢失。{"id":1234567890123456789//js读到的值是1234567890123456800}{"id":"1234567890123456789"//js读到的值是'1234567890123456789'}给你的ID字段或其getter加个注解使其在序列化的时候转为string@JsonSerialize(using=ToStringSerializer.class)privateLongid;参考SpringBoot中使用Jackson导致Long型数据精度丢失问题
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript