开发业务的时候,使用到了Springboot1.5.9 ,实现一个拦截功能,做验证使用,实现接口 Spring 提供的HandlerInterceptor,验证要求返回值。所以用了Respone的response.getWriter() 使用PrintWriter来打印响应的错误日志。调用过程就会报IllegalStateException: getWriter() has already been called for this response 这个异常。 错误信息就是一个响应多次调用了getWriter(),在网上搜索就我自己测试而言没有找到问题的关键,由于没有时间调试源码,就采用了其他的流ServletOutputStream out = response.getOutputStream(); 就没有问题,但是这个流打印中文也会报字符的异常。out.write(JsonUtils.toJson(validateMsg).getBytes("utf-8")); 使用这个方法就行啦。
具体的问题 到时候会调式源码,如果有详细解析会在评论区给予答案。