在一个roundtrip中response只能被发出一次,在一些验证码、文件下载中通过httpServletResponse.getOutputStream()和requestOutputStream.write()等方法已将response发出,再return ActionForward时被认为是再发送一次,因而报错。出现这种情况的时候,后面的return将只可以返回null,这可以由httpServletResponse.iscommitted()获知。
代码如下:
public class CheckCode extends BaseAction {
private static final long serialVersionUID = 1L;
public String execute() throws Exception {
String checkCode = String.valueOf(new Random().nextInt(8999)+1000);

当在Struts Action中,使用httpServletResponse.getOutputStream()发送内容后,尝试返回ActionForward会抛出'Response already committed'错误。为避免此问题,可以在返回前检查httpServletResponse.isCommitted(),如果已提交,则返回null,否则返回正常的处理结果。
最低0.47元/天 解锁文章
7453

被折叠的 条评论
为什么被折叠?



