住房建设厅官方网站,微信广告代理好做吗,网站产品使用说明书怎么做,深圳建网站哪个公1遇到的问题在开发过程中存在这样一种问题#xff0c;我们使用的id主键主要有long类型和varchar类型当主键id为long类型并且长度超过16位#xff0c;当返回给前端时#xff0c;前端会出现js解析的参数如果是Long类型的并且长度过大就会出现精度丢失。这就会造成后台返回的值…1遇到的问题在开发过程中存在这样一种问题我们使用的id主键主要有long类型和varchar类型当主键id为long类型并且长度超过16位当返回给前端时前端会出现js解析的参数如果是Long类型的并且长度过大就会出现精度丢失。这就会造成后台返回的值与前端拿到的不一致问题。2解决思路根据加固项目采用SpringspringMVCmango的架构设计前后端参数传递都有统一出入口,根据FastJsonHttpMessageConverter实现了HttpMessageConverter对于后台返回的Java对象解析为outStream后返回给前端在配置中实现拦截。在 SpringMVC进入readString方法前会根据requestBody选择HttpMessageConverterhttp请求是基于文 本的浏览器和服务器通过交换原始文件进行通信这就意味着需要将我们的Java对象序列化和反序列化及将Java对象解析到String变量中当执行 readString方法时绑定string参数输出响应报文。(响应时)springmvc-----java对象------HttpMessageConverter----outStream----响应报文3实例说明加固项目applicationContext-http.xml部分配置application/json;charsetUTF-8text/plain;charsetUTF-8在Java对象转为json对象时会被FastJsonHttpMessageConverter这个处理类拦截拦截时会触发自己配置的toStringSerializer处理类该类中可以自定义所需要处理返回给前端的数据。public class ToStringSerializer implements ValueFilter {Overridepublic Object process(Object object, String name, Object value) {if(value ! null value instanceof Long) {if(((Long) value).longValue()10000000000000000L) {value value;}}return value;}}自定义类ToStringSerializer 实现了ValueFilter 继承了SerializeFilter接口重写了process方法该方法有三个参数json对象对象key,对象value当key对应的值为long类型且长度超过十六位此时统一在处理类中将该值转为字符串类型然后返回给前端。