Servlets IllegalStateException:调用response.getWriter时流
这是一个用于处理ajax请求的方法。因此,输出被写入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 }
响应
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
来代替它。