是el表达式有缓存还是清除session要很长时间。

时间:2022-05-29 13:14:11
探讨背景:近日在做一个邮件管理系统,用javamail实现的,前台用jqueryEasyUi的datagrid控件作为邮件基本信息的显示控件,当单击该控件中的某一行时,将改行索引id保存在cookie中,继而到了邮件具体信息的展示页面。这个页面我是这样实现的:

(1)、用js定义一个"id",遍历cookie,获得被单击的邮件的id;
(2)、清除该cookie;(3)、将获得的"id"的值作为ajax请求的参数,请求获取邮件头部信息;
(3)、后台通过Session把需要的信息保存,前台用el表达式取得session中的值显示;
(4)、再进行一次ajax请求清空session,这样做的目的是防止再次请求的时候显示的是上一次请求的响应内容。

问题:
    当第一次单击想要查看的邮件后,进行了如上所述的几个步骤,后台能将数据存储到Session中,但不显示。当再一次单击的时候显示的是上一次请求的响应结果,可是当页面加载完以后已经清除了Session中的内容了的,为什么还显示?
    是因为session.remove("XXX")后要等一段时间才能真正的kill掉session中的值???
    是因为el表达式有自己的缓存,可以从上一次的存储中获取数据???
    还是因为后台数据还没准备好,前台dom就已经完成了加载,还没开始就已经结束了???如果这样,如何才能让她开始,完成后再结束?????? 


以下为上述几个步骤的代码前台实现:
<script type="text/javascript">
$(function() {
//定义ID获得cookie中的值,改值为要查看的邮件的ID号
var id = null;
//遍历cookie,从cookie集合中取出被单击的邮件的ID
var arrStr = document.cookie.split(";");
for ( var i = 0; i < arrStr.length; i++) {
var temp = arrStr[i].split("=");
if (temp[0] == "msgnum")
id = temp[1]; 
}
//取出ID后删除被单击右键的cookie
SetCookie();
//提交获得邮件信息
$.ajax({
type : "POST",
url : "${pageContext.request.contextPath}/receiveMailAction!ReceiveHead.action",
data : "msgnum=" + id,
success : function(msg) {
}
});
//隐藏回复层
$("#reply").hide();
});
//当单击“回复”时,回复层显示
function re() {
$("#reply").show("slow");
}
//删除cookie
 function SetCookie(Name, Value, Time)
 {
 var Now = new Date();
 var Exp = new Date(Now.valueOf()+0*60000*60*60);
 document.cookie ='msgnum'+'='+escape('')+';path=/BysjMail/; domain=lijun-pc; expires='+Exp.toGMTString()+';';

 }
//成功加载完页面后执行,清除session,以防止下次再执行的时候获得的是上次的响应内容
function remove(){
$.ajax({
type : "POST",
url : "${pageContext.request.contextPath}/replyAction!resetUserSession.action",
success : function(msg) {

}
});
}
</script>
</head>

//页面加载完后执行remove()清空Session。
<body onload="remove()">

后台代码的实现:
(1)赋值

session.put("subject", "主    题:"+subject);
session.put("from", "发件  人:"+from);
session.put("data", "发件时间:"+sendDate);
session.put("attach", "附    件:"+attachname+"<a "+"href="+"\""+"javascript:void(0)"+"\""+" onclick="+"\""+"re()"+"\""+">回复0</a><br />");

(2)清空Session

public void resetUserSession(){

session.remove("subject");
session.remove("from");
session.remove("data");
session.remove("attach");


}

怀着希望发帖求救,感谢感谢!!!!

3 个解决方案

#1


自己先顶一个!

#2


还是没有回复

#3


怎么解决的朋友

#1


自己先顶一个!

#2


还是没有回复

#3


怎么解决的朋友