java.lang.IllegalStateException: READER问题解决

一  背景

在自测的过程中发现一个问题,在使用@requestBody注解时发现controller接收的request类拿不到body传的json数据,提示错误

 java.lang.IllegalStateException: READER问题解决

二  问题排查

1  检查参数传的和后端的参数类型是否匹配(检验后是匹配的)

2  是不是@requestBody后面的@valid注解有问题,因为接收参数的request类是没有在属性上加上@NotNullExt 等注解,(这个注解的作用是前端传的参数不符合后端参数要求时,返回属性上message的错误信息),比如这个参数后端没有正确拿到,就会抛出message="销售员工ID不能为空"的错误信息

 java.lang.IllegalStateException: READER问题解决

3  是不是某些参数的类型确实对不上(删除只剩下一个属性还是同样的问题)

4  debug发现从body里拿的流数据是null的

5  最后检查发现是因为在拦截器里取了一遍body中的信息,打印参数,方便排查问题

三  问题解决

1  把取body打印日志的逻辑去掉,只打印url和url带的参数信息

2  定义过滤器,重写HttpServletRequestWrapper类的getInputStream方法,这个方法读取存在缓存中

3  具体实现可参考:https://blog.csdn.net/dark_horse_lk/article/details/82344692

 

 

 

相关文章: