js / java前后端类型转换问题 报错400

一、情形:

     最近前后端分离,前端人员传来的数据一直到不了我写的接口,提示报错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基本数据类型

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Android和JS之间传递图片通常有两种方式,一种是通过Base64编码的方式传递,另一种是通过文件路径传递。 如果你选择使用Base64编码的方式传递图片,在Android端需要将图片转换为Base64字符串,然后将其传递给JS。在JS端接收到Base64字符串后,需要将其转换为图片进行展示或者上传。 以下是一个简单的示例代码: Android端代码: ```java // 将图片转换为Base64字符串 public String imageToBase64(String path) { Bitmap bitmap = BitmapFactory.decodeFile(path); ByteArrayOutputStream baos = new ByteArrayOutputStream(); bitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos); byte[] bytes = baos.toByteArray(); return Base64.encodeToString(bytes, Base64.DEFAULT); } // 将Base64字符串传递给JS webView.loadUrl("javascript:showImage('" + imageToBase64(path) + "')"); ``` JS端代码: ```javascript // 接收Base64字符串,并将其转换为图片 function showImage(base64String) { var img = document.createElement('img'); img.src = 'data:image/png;base64,' + base64String; document.body.appendChild(img); } ``` 如果你想通过文件路径传递图片,可以参考下面的示例代码: Android端代码: ```java // 选择图片 private void chooseImage() { Intent intent = new Intent(Intent.ACTION_PICK); intent.setType("image/*"); startActivityForResult(intent, REQUEST_CODE_CHOOSE_IMAGE); } // 将文件路径传递给JS @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == REQUEST_CODE_CHOOSE_IMAGE && resultCode == RESULT_OK) { Uri uri = data.getData(); String path = getPath(uri); webView.loadUrl("javascript:showImage('" + path + "')"); } } // 获取文件路径 private String getPath(Uri uri) { String[] projection = {MediaStore.Images.Media.DATA}; Cursor cursor = getContentResolver().query(uri, projection, null, null, null); int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA); cursor.moveToFirst(); String path = cursor.getString(column_index); cursor.close(); return path; } ``` JS端代码: ```javascript // 接收文件路径,并将其展示或者上传 function showImage(path) { var img = document.createElement('img'); img.src = path; document.body.appendChild(img); } ``` 以上是两种常见的在Android和JS之间传递图片的方式,你可以根据具体的需求选择适合自己的方式。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值