我正在开发这个JavaSprint3.0应用程序,在这个应用程序中,我将数据传递到一个datatable。一切正常,但我经常看到这样的错误:
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:
1条答案
按热度按时间piah890a1#
基本要素包括:
头必须先写;
然后内容必须使用
getOutputStream
或者getWriter
.仍然会出错的地方:
基本错误,如使用两者
response.getOutputStream()
以及response.getWriter()
-在这里不太可能。控制流程:
过滤器或拦截器:通常不太可能;尽管这里有注解。
正在使用的servlet字段。服务方法本身应该是无状态的。