long超过16位之后浏览器自动截断问题处理。

java前后端交互的过程中,定义的Long字段超过16位之后,js发生截断,从而不能跟后台数据进行匹配。
处理方法
  1. 把long型字段转成string进行处理。(可以使用json注解转换或者springmvc统一拦截处理)
  2. 修改数据库以及java实体类,数据库使用varchar,实体使用string,避免截断问题。
在大多数情况下,第一种是可取的,第二种,可行,但是可能修改起来工作量大。
本人在项目中使用了springmvc+fastjson进行统一处理,处理方法如下:
继承fastjson中的ValueFilter
public class ToStringSerializer implements ValueFilter {

    [@Override](https://my.oschina.net/u/1162528)
    public Object process(Object object, String name, Object value) {
        if(value != null && value instanceof Long) {
            if(((Long) value).longValue()>=10000000000000000L) {
                value = value+"";
            }
        }
        return value;
    }
}
spring统一配置中添加
<bean id="toStringSerializer" class="com.xdja.topsec.ToStringSerializer"/>
	<bean id="jsonConverter" class="com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter">
		<property name="supportedMediaTypes">
	         <list>
	         	<value>application/json;charset=UTF-8</value>
	         	<value>text/plain;charset=UTF-8</value>
	         </list>
	    </property>
		<property name="fastJsonConfig" ref="fastJsonConfig"/>
	</bean>

	<bean id="fastJsonConfig" class="com.alibaba.fastjson.support.config.FastJsonConfig">
		<property name="serializeFilters">
			<list>
				<ref bean="toStringSerializer"/>
			</list>
		</property>
	</bean>
	```

转载于:https://my.oschina.net/u/1787735/blog/1833697

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值