Spring: getOutputStream() уже был вызван для этого ответаJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Spring: getOutputStream() уже был вызван для этого ответа

Сообщение Anonymous »

Я знаю, что есть много других сообщений, посвященных той же самой ошибке, но все они либо о страницах JSP/GSP, либо по какой-либо другой причине, которая не очень полезна в моем случае. Я использую Spring MVC с Thymeleaf. Следующая функция предназначена для загрузки файла.

Код: Выделить всё

@RequestMapping(value = "/test/download/*", method = RequestMethod.GET)
public String getFile(HttpServletResponse response)
{

ServletOutputStream stream = null;
try
{
stream = response.getOutputStream();

MultipartFile f = test.getFile();

InputStream is = f.getInputStream();
IOUtils.copy(is, stream);
response.flushBuffer();

stream.flush();
stream.close();

} catch(Exception ex)
{

}

return "test";

}
Это действительно работает, так что это не такая уж большая проблема, но в консоли я всегда получаю следующую ошибку:

Код: Выделить всё

2014-01-10T09:28:09.053+0100  SEVERE  Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception  [Request processing failed; nested exception is java.lang.IllegalStateException: getOutputStream() has already been called for this response] with root cause
java.lang.IllegalStateException: getOutputStream() has already been called for this response
at org.apache.catalina.connector.Response.getWriter(Response.java:638)
at org.apache.catalina.connector.ResponseFacade.getWriter(ResponseFacade.java:214)
at javax.servlet.ServletResponseWrapper.getWriter(ServletResponseWrapper.java:105)
at javax.servlet.ServletResponseWrapper.getWriter(ServletResponseWrapper.java:105)
at org.springframework.security.web.context.SaveContextOnUpdateOrErrorResponseWrapper.getWriter(SaveContextOnUpdateOrErrorResponseWrapper.java:125)
at org.thymeleaf.spring3.view.ThymeleafView.renderFragment(ThymeleafView.java:335)
at org.thymeleaf.spring3.view.ThymeleafView.render(ThymeleafView.java:190)
[...]
Насколько я вижу, getOutputStream() вызывается только один раз. Кроме того, вся функция окружена блоком try-catch. Итак, я хотел бы знать, откуда эта ошибка?

Подробнее здесь: https://stackoverflow.com/questions/210 ... s-response
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»