Servlets IllegalStateException:调用response.getWriter时流

Servlets IllegalStateException:调用response.getWriter时流,servlets,spring-mvc,httpresponse,illegalstateexception,Servlets,Spring Mvc,Httpresponse,Illegalstateexception,这是一个用于处理ajax请求的方法。因此,输出被写入响应 public ModelAndView myAction(HttpServletRequest request, HttpServletResponse response, BindException errors) throws Exception { //call other methods and send the response as arg //call getWriter on the response }

这是一个用于处理ajax请求的方法。因此,输出被写入
响应

public ModelAndView myAction(HttpServletRequest request, HttpServletResponse response, BindException errors) throws Exception
{
    //call other methods and send the response as arg
    //call getWriter on the response
}
根据,如果我调用getWriter时已经调用了getOutputStream(),那么我肯定会有一个非法状态异常,因此我怀疑我传递响应的方法会这样做,尽管我没有看到它们这样做。。。 唯一可以确定的是,在某个时刻,其中一个方法可能会执行response.senderro()。 这是如何调用getOutputStream()的吗?

提交响应并发送错误状态代码。javadoc声明

如果响应已经提交,此方法将抛出 非法国家例外。使用此方法后,响应应为 视为已承诺,不应写信给

换句话说,在调用该方法之后,HTTP响应基本上已经发送。调用任何
getOutputStream()
getWriter()
方法都没有意义。您的
Servlet
容器还通过在您尝试时引发异常而使其更简单。

提交响应并发送错误状态代码。javadoc声明

如果响应已经提交,此方法将抛出 非法国家例外。使用此方法后,响应应为 视为已承诺,不应写信给


换句话说,在调用该方法之后,HTTP响应基本上已经发送。调用任何
getOutputStream()
getWriter()
方法都没有意义。您的
Servlet
容器通过在您尝试时抛出异常,使其更加简单。

我有类似的问题,但在此之前我没有调用sendError(),只是调用了setContentType()。根据,它可以触发相同的行为:

我猜是因为你已经打开了这条小溪 调用相应的setContentType(“text/plain”);方法,然后 正在尝试获取Writer对象。您可以使用基于流的 类,或基于编写器的类-不是两者都有

请删除setContentType(),或使用 getOutputStream()方法。这应该可以解决问题


事实上,它为我解决了类似的错误。

我也有类似的问题,但在此之前我没有调用senderro(),只是调用了setContentType()。根据,它可以触发相同的行为:

我猜是因为你已经打开了这条小溪 调用相应的setContentType(“text/plain”);方法,然后 正在尝试获取Writer对象。您可以使用基于流的 类,或基于编写器的类-不是两者都有

请删除setContentType(),或使用 getOutputStream()方法。这应该可以解决问题


事实上,它为我解决了类似的错误。

显示您返回的
ModelAndView
,如果它映射到其他资源,例如
jsp
。我认为它不一定是
ModelAndView
。我可以很好地用
void
替换它。向我们展示您返回的
ModelAndView
,如果它映射到其他资源,例如
jsp
。我认为它不必是
ModelAndView
。我可以用
void
来代替它。