前景提要
model.addAttribute 长整型丢失精度问题
0 悬赏园豆: 100 [待解决问题] 例如有一个用户类 public class User implements Serializable { private static final long serialVersionUID = 1L; private Long id; private String username; //...省略get、set }
我在跳转到编辑页面时,需要携带要编辑的用户信息。大概的代码如下: @GetMapping("edit") public String edit(Model model, @RequestParam Long id) { model.addAttribute("entity", userService.findById(id)); return "user/edit"; }
那么此时问题就出来了。在页面“user/edit”上获取到的id,精度丢失了,例如本来是94105929343041536变成了94105929343041540。
要怎么改,改动最小,才能获取到正确的长整型的id值呢? java SpringBoot 五毛程序员 | 初学一级 | 园豆: 102
提问于:2019-04-30 15:42 显示帮助
使用"Ctrl+Enter"可进行快捷提交,评论支持部分 Markdown 语法:[link](http://example.com) _italic_ **bold** `code`。
< > 分享
分享您的问题
所有回答(2) 0 传的数据量不小,建议使下Post传参 这个是JavaScript的Number导致的失真, 前端页面可以使用string传值 parseInt(94105929343041536) = 94105929343041540 大志若愚 | 园豆:1093 (小虾三级) | 2019-04-30 16:53 不是前端传过来有问题,是后台传给前端的"user/edit"页面,页面获取的id有问题。 支持( 0 ) 反对( 0 ) 五毛程序员 | 园豆:102 (初学一级) | 2019-04-30 16:56 @五毛程序员: 那就后端把Long转string,传给前台,否则前台JavaScript接收到数据就会对数据做存储,这时候数据就变了 支持( 0 ) 反对( 0 ) 大志若愚 | 园豆:1093 (小虾三级) | 2019-04-30 16:57 @大志若愚: 这是解决办法。但如何修改,改动最小?需要考虑不只是id是Long的情形。 支持( 0 ) 反对( 0 ) 五毛程序员 | 园豆:102 (初学一级) | 2019-04-30 17:22 @五毛程序员:
SpringBoot是使用 Jackson 作为 JSON 序列化和反序列化工具的,
配置 Jackson 将Long都转为字符串
可以参考 Spring Boot 2.0版本 Jackson全局转化long类型为String,解决jackson序列化时long类型缺失精度问题 支持( 0 ) 反对( 0 ) 大志若愚 | 园豆:1093 (小虾三级) | 2019-04-30 17:34 编辑文本 预览 上传图片
Ctrl+Enter键快速提交 0 让前端用字符串的方式传递,后端用String接收参数,然后再转Long 狼爷 | 园豆:1192 (小虾三级) | 2019-05-02 12:50 编辑文本 预览 上传图片
Ctrl+Enter键快速提交
清除回答草稿
您需要 登录 以后才能回答,未注册用户请先 注册 。