一、情形:
最近前后端分离,前端人员传来的数据一直到不了我写的接口,提示报错400,400是参数类型错误。一顿分析之后,把原因定在了Integer,Long 类型得数据上。因为js是弱类型语言,对Integer 等基本类型数据的要求 没有java 那么严格,js 定义的int类型数据
经过json 处理后变成了字符串类型,而我后台接收的对象,对象中 字段类型有 integer 的也有long 的,这就报错了。
接收参数 报错的model:
二、处理:
接收数据 不用之前 java的mode,而是 定义一个接收参数的 java 类,里面 的属性和mode一样,只是 参数类型全部为String,
处理后新建 的 bean:
这样 就不会报错400,接收到前台的参数之后,在将对应的String 转换为 Int 或者 long ,然后将值 赋值到对应的model ,这样就实现了功能。注意:boolean 类型 前台 传值后台 true / false 后台是可以接收的,我没改,但是如果前台不是boolean 那就要改,true 到数据库 会变成1。false 是0。
三、类型转换
1、 String 转 Integer:
Java 中要将 String 类型转化为 int 类型时,需要使用 Integer 类中的 parseInt() 方法或者 valueOf() 方法进行转换。
eg: int a = Integer.parseInt(str);
int a = Integer.valueOf(String).IntValue();
integer 转 String:
1.String str = String.ValueOf(i);
2.String str = Intager.toString(i);
3.String str = ""+i;
为了保险 有时候需要加try catch
2、long 转 String
long l = Long.parseLong(String);
Long.ValueOf("String")与Long.parseLong("String")的区别
Long.ValueOf("String")返回Long包装类型
Long.parseLong("String")返回long基本数据类型