Java 使用PrintWriter时已为此响应调用getOutputStream()
我正在开发这个JavaSprint3.0应用程序,在这个应用程序中,我将数据传递到一个dataTable。一切正常,但我经常看到这样的错误:Java 使用PrintWriter时已为此响应调用getOutputStream(),java,spring,spring-mvc,Java,Spring,Spring Mvc,我正在开发这个JavaSprint3.0应用程序,在这个应用程序中,我将数据传递到一个dataTable。一切正常,但我经常看到这样的错误: ERROR [[dispatcher]] Servlet.service() for servlet dispatcher threw exception java.lang.IllegalStateException: getOutputStream() has already been called 对于这一回应 这是我的密码: @PreAuthor
ERROR [[dispatcher]] Servlet.service() for servlet dispatcher threw exception
java.lang.IllegalStateException: getOutputStream() has already been called
对于这一回应
这是我的密码:
@PreAuthorize("hasRole('ADMIN')")
@RequestMapping(value = "/dataTable", method = RequestMethod.GET)
public void serverSide(Model model, HttpServletRequest request, HttpServletResponse response) throws IOException {
response.setContentType("application/json");
response.setHeader("Cache-Control", "no-store");
PrintWriter out = response.getWriter();
out.print(dataTableService.viewUsers(request));
}
我尝试添加以下内容:
out.flush();
out.close();
return;
我还尝试使用response.getOutputStream().print(dataTableService.viewUsers(request))和response.getWriter().append(dataTableService.viewUsers(request))而不是使用PrintWriter,但似乎没有什么办法解决它
编辑:
以下是stacktrace:
基础是:
getOutputStream
或getWriter
编写内容- 基本错误,如同时使用
和response.getOutputStream()
——在这里不太可能response.getWriter()
- 控制流:
if (...) { ... redirect // Missing return } ... normal output
- 过滤器或拦截器:通常不太可能;虽然这里有注释
out.flush(); // OKAY // Probably NOT OKAY: out.close();
- 正在使用的Servlet字段。服务方法本身应该是无状态的
HttpServletResponse
。要解决您的问题,您的方法需要返回一个ResponseEntity
,如果您想自己可靠地编写输出,您还可以编写一个合适的spring视图,设置一个模型,并返回它应该返回的视图be@specialist我对spring非常陌生,所以我只是在遵循应用程序中已经完成的一个示例。你能不能给我举个例子,因为我真的不知道你在说什么。非常感谢。你能再加一些stacktrace吗。异常来自其他地方或您的功能。要考虑的一个场景是VIEW用户调用抛出异常,Spring正在尝试生成错误页面,但是响应流已经可以访问了,谢谢您的详细解答。我只尝试添加了.flush(),但问题仍然存在。还有其他建议吗?不知道,@Specializet e.a.指出了错误的“魔法”弹簧用法。spring的另一个例子可能会有所帮助。到目前为止,还没有任何效果,您还有其他例子吗?从另一个spring例子开始;尝试返回字符串,return(dataTableService.viewUsers(请求)问题是使用spring有很多不同的版本,我没有在构造附近使用servlet。不,stacktrace很有趣,因为我今天刚刚看到了它。显示了一个视图jsp,所以您的控制器方法应该只提供表的数据模型。我希望有人能够展示一个最佳实践示例。