1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > Cannot create a session after the response has been committed的处理

Cannot create a session after the response has been committed的处理

时间:2023-03-12 15:04:33

相关推荐

Cannot create a session after the response has been committed的处理

情景:在导出excel导出过程中前台提示“正在导出,请稍等...”,导出结束后提示信息自动消失。

但导出结束后就报如上错误,不可能相应两次。

解决:主要是判断导出结束的时间点,确认导出结束时间。通过cookie解决,设置cookie

if(fileName.contains("日志数据")){Cookie status = new Cookie("exportStatus","success");status.setMaxAge(60000); //单位为秒response.addCookie(status);}

如果不设置过期时间,则表示这个cookie生命周期为浏览器会话期间,只要关闭浏览器窗口,cookie就消失了。

这种生命期为浏览会话期的cookie被称为会话cookie。会话cookie一般不保存在硬盘上而是保存在内存里。

如果设置了过期时间,浏览器就会把cookie保存到硬盘上,关闭后再次打开浏览器,这些cookie依然有效直到超过设定的过期时间。存储在硬盘上的cookie可以在不同的浏览器进程间共享,比如两个IE窗口。而对于保存在内存的cookie,不同的浏览器有不同的处理方式。

cookie.setmaxage设置为0时,会马上在浏览器上删除指定的cookie

cookie.setmaxage设置为-1时,代表关闭当前浏览器即失效。

//获取cookie

function getCookie(name){var arr,reg=new RegExp("(^| )"+name+"=([^;]*)(;|$)");if(arr=document.cookie.match(reg)){return unescape(arr[2]);}else{return null;}}//删除cookie function delCookie(name){var exp = new Date();exp.setTime(exp.getTime() - 1);var cval=getCookie(name);if(cval!=null){document.cookie= name + "="+cval+";expires="+exp.toGMTString();}}

在备份中添加定时器,每100ms执行一次

var timeRequest;$("#btnExport").click(function(){top.$.jBox.confirm("确认要导出日志数据吗?","系统提示",function(v,h,f){if(v=="ok"){var currentTime = $("#currentTime").val();var beginDate = $("#beginDate").val();var endDate = $("#endDate").val();$("#searchForm").attr("onsubmit","loading('正在导出数据,请稍等...');");$("#searchForm").attr("action","${ctx}/sys/log/export?currentTime="+currentTime+"&beginDate="+beginDate+"&endDate="+endDate);$("#searchForm").submit();timeRequest = setInterval(refeshPage,100);}});top.$('.jbox-body .jbox-icon').css('top','55px');});

refeshPage方法如下:

function refeshPage(){var exportStatus = getCookie('exportStatus');if(exportStatus == "success"){ //获取cookie后去掉页面提示,重新提交后台获得日志列表clearInterval(timeRequest); //清除定时器delCookie("exportStatus"); //删除cookie$("#searchForm").attr("action","${ctx}/sys/log/list");$("#searchForm").removeAttr("onsubmit");$("#searchForm").submit();}}

没想到用cookie,办法同事想到的,记录一下

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。