【发布时间】:2019-02-04 15:21:01
【问题描述】:
我正在开发这个 Java Sprint 3.0 应用程序,我在其中将数据传递给数据表。一切正常,但我经常看到这个错误:
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 但似乎没有任何解决办法。
编辑:
【问题讨论】:
-
你不在调试器中调用那些吗?
-
@Naya 是的,我正在调试模式下运行
-
你有点滥用 spring,这可能是罪魁祸首:如果发生意外情况,spring 可以预先填写
HttpServletResponse。为了解决您的问题,如果您想自己可靠地编写输出,则您的方法需要返回ResponseEntity- 您还可以编写适当的弹簧视图,设置模型并按照预期返回视图成为 -
@specialist 我对 spring 很陌生,所以我只是按照应用程序中完成的示例进行操作。您能否发布或指出一个示例,因为我真的不知道您在说什么。谢谢!
-
你能添加更多的堆栈跟踪吗?异常是来自其他地方还是来自您的功能。要考虑的一种情况是 viewUsers 调用抛出异常,spring 试图生成错误页面,但响应流已经被访问
标签: java spring spring-mvc