Hello,大家好啊,今天在微服务开发中遇到一个很无语的问题,用mybatisplus分页写一个分页查询,我自己自定义封装了一个工具类PageUtils,返回的对象是PageUtils
我在web模块调用service模块的时候
这里能够去调用并且返回了值,说明web请求到了service
但是呢他给我返回了一个LinkedHashMap类型。。我明明在service模块返回的对象是PageUtils。结果我Web请求的回来的数据格式变成了LinkedHashMap,然后就是直接报错了因为我这里强转的是PageUtils
PageUtils<ContentCategory> pageUtils = (PageUtils<ContentCategory>) resultCommon.getData();
查阅了半天资料才找到 原来是springboot内置的jackson自动转换有问题,
其实这里 直接用LinkedHashMap也行,但是我不爽啊,凭啥我返回的是PageUtils,你给我来个
LinkedHashMap,办它!
第一想到的是 既然是模块调用模块 会不会是我@RequestBody没加,但是哈,检查了,基本该加的都加了
第二,我这里用的不是我自己定义的ResultCommon嘛
那我直接在这边用泛型直接定义不就好 private T data; 然后呢去service模块
直接给你定义好,省的那个内置的json转换给我自己转成map ResultCommon<PageUtils<ContentCategory>>
那么写好后,我再次启动又报错了
org.springframework.web.util.NestedServletException: Request processing failed; nested exception is feign.codec.DecodeException: Type definition error: [simple type, class com.freshmall.utils.PageUtils]; nested exception is com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of `com.freshmall.utils.PageUtils` (no Creators, like default construct, exist): cannot deserialize from Object value (no delegate- or property-based Creator)
,其实这个错误基本一眼就能看出来。工具类PageUtils 没写无参构造,加上去就好了,这里有人会问了,我都没有去调用无参,为什么还需要无参呢,额,这个其实idea底层调用的就是无参
这个坑,估计好多人都踩过
在启动,我看们到 现在这个对象就是PageUtils了,哈哈,到此问题解决了