对于初学者来说,一个常见的误解是:当调用 forward() 或者 sendRedirect() 时控制流将会自动跳出原函数。标题所示错误通常是基于此误解而引起的。
示例代码:
protected void doPost() { if (someCondition) { sendRedirect(); } forward(); // This is STILL invoked when someCondition is true!}forward() 和 sendRedirect() 与system.exit() 不同,当上例中的 someCondition为true时,很有可能得到此异常:
IllegalStateException: Cannot forward a response that is already committed
为了解决此问题,可以在sendRedirect() / forward() 之后加上 return;
protected void doPost() { if (someCondition) { sendRedirect(); return; } forward();}或者把后一个forward() 放入else中
protected void doPost() { if (someCondition) { sendRedirect(); }else{ forward(); } }上文所述是引起该异常的最常见的情况;近日在一个由服务器下载文件函数中避免了上述问题,但仍然出现了此异常。除去冗余部分的函数如下:
public void download(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { ... OutputStream out = response.getOutputStream(); try { ... out.write(); } catch (Exception e){ log.error(e.getMessage()); } finally { if (out!=null ){ out.flush(); out.close(); } ... forward(); }Server端在提交response到Client端之前会向一个缓冲区写入相应头和状态码,然后将内容清空。而一旦缓冲区被清空就标志着该response已被提交(response is committed)。于是在finally块中随着out.flush(),该response已被提交了。原因找到,解决方法同上。
相关推荐
在Java的Web开发中,`java.lang.IllegalStateException: Cannot call sendError() after the response has been committed` 是一个常见的错误,通常发生在尝试在HTTP响应已经发送到客户端之后调用`sendError()`方法...
IllegalStateException: The specified child already has a parent.我的博客中有文章讲解
纠结了半天的 java.lang.IllegalStateException: getOutputStream() has already。这个问题困扰了半天,在网上查阅了大量资料 出这个错误一般就是下面2个.....
标题 "java.lang.IllegalStateException: OutputStream already obtain" 涉及到的是Java编程中的一个常见错误,特别是当处理I/O流时。这个异常通常在尝试获取已经存在的OutputStream实例时抛出,表明该输出流已经被...
1、错误信息 异常:Caused by: java.lang....Caused by: java.lang.IllegalStateException: Method has too many Body parameters: public abstract com.iot.framework.core.response.CommResponse ...
java.lang.IllegalStateException: The content of the adapter has changed but ListView did not receive a notification. Make sure the content of your adapter is not modified from a background thread, but...
2. `java.lang.IllegalStateException: Adapter is detached.` 这个异常通常与Android的ListView或者RecyclerView的Adapter有关。当试图在Adapter与列表视图分离后(即未绑定到任何视图)更新Adapter数据时,会抛出...
《Spring框架:开启Java开发新纪元》 Spring框架,由Rod Johnson创立并由Interface21公司推广,自诞生以来,它就致力于简化Java企业级应用(J2EE)的开发,提供了一种非侵入式的解决方案,极大地提高了开发效率。...
这个存储库提供了一种在处理片段传输和后台任务时避免“java.lang.IllegalStateException:Can not perform this action after onSaveInstanceState”的方法。 您可以在的非常权威的阅读有关该问题和可能的解决方案...
Cause: java.lang.IllegalStateException: Cannot enable lazy loading because CGLIB is not available. Add CGLIB to your classpath.:java.lang.IncompatibleClassChangeError: class ...
### PowerBuilder 中从 Excel 导入数据到 DataWindow 的实现方法 #### 标题解析: 在 PowerBuilder 开发环境中,经常需要将外部数据源(如 Excel 文件)中的数据导入到程序内部的数据展示组件(DataWindow)中进行...
在Java开发中,Web服务(Web Service)是一种标准的接口,允许不同系统之间进行通信,而XFire是早年流行的一款用于构建和消费Web服务的开源框架。它使用SOAP(简单对象访问协议)和XML(可扩展标记语言)作为基础,...
3. **判断标准**:描述中的“GUIDELINES TO DETERMINE IF A DRAWING NEEDS TO BE UPDATED WHEN GD&T IS NOT AFFECTED BY ENGINEERING CHANGE”是指一套规则,用于确定在不涉及GD&T的工程变更下,是否仍需更新图纸。...
native int add(int a, int b); static { System.loadLibrary("mylib"); // 加载动态库 } } ``` `add`方法是本地方法,`System.loadLibrary`用于加载名为`mylib`的动态库。 3. **编译JNI头文件**: 使用`...
NSLog(@"Hello, my name is %@", self.name); } @end ``` 2. **实例化对象**: ```objective-c ClassName *object = [[ClassName alloc] init]; object.name = @"John Doe"; [object sayHello]; ``` 3....
java.lang.IllegalStateException: forward() not allowed after buffer has committed. ``` 解决办法同样是确保在使用`<jsp:forward>`之前没有任何输出。 ### 总结 以上介绍了JSP中的三种页面跳转方式:`response...
**Jacob使用说明终极吐血版** ... ## 1.... ...JNI允许Java代码调用本地(Native)代码,也就是非Java语言编写的代码,如C++或C。...## 2....首先,你需要下载Jacob的JAR文件和相应的DLL库。DLL库根据你的操作系统位数(32位或64...
Type 异常报告 消息 Failed to convert ... nested exception is java.lang.IllegalStateException: Cannot convert value of type 'java.lang.String' to required type 'java.util.Date': no matching editors or co
- 这里可能会出现`java.lang.IllegalStateException: Attempt to clear a buffer that's already been flushed`异常,原因是缓冲区已满,而`<jsp:forward>`试图清空缓冲区。 3. **尝试在缓冲区非常大时使用`<jsp:...