在改造代码的时候遇到的问题,关键还搞了很久。前端传输两个参数(分页的页码和大小),开始是使用拼接的形式直接调用后台接口。在使用axios进行二次封装后、不想使用拼接的形式,想直接传递参数给后端,后端使用Map进行接收,然后使用key-value的形式获取传来的数据。结果后端获取后的转化出了问题。。。

特此记录

1、问题说明

字符串不能转换为 java.lang.Integer。这个转换和Map有关联

2、错误原因

map里存放的是key-value的键值对。如果你放入(put)的时候是Integer、直接强制类型转换没问题​​(Integer)XXX​​。如果你放入的时候是字符串,内容是数字,强转就会报错。​​Integer.parseInt(maps.get("page"));​​​ 或者​​Integer.valueOf(maps.get("page"));​​ 同样会报错。【这个就和我当前的状况一样、前端使用params传递参数、后端使用map接收。】

为了成功转换、可以使用:​​ Integer currentPage = Integer.parseInt(maps.get("page").toString());​

前端调用后端接口、传递参数

成功解决:java.lang.String cannot be cast to java.lang.Integer_java


后端接口设计、获得参数

成功解决:java.lang.String cannot be cast to java.lang.Integer_传递参数_02

3、解决方法

看2解析

Integer currentPage = Integer.parseInt(maps.get("page").toString());