今天在用Ajax完成一个作业的时候,Ajax代码实时得到服务端数据,但是用一个无状态会话Bean来操作实体Bean,但是实体Bean一直都是同一个。
刚刚想到别开一个浏览器试试,结果又可以了。才发现数据更新到数据库一操作就在数据库有体现,但是查询的实体却不是,等过一段时间在操作数据才显示出更新,不知道是容器的操作有一定时间?还是Bean的生存周期还在,我点得太快,所以得到的是同一个实体?期望有高手给出解答。
终于找到原因了,是由于IE缓存原因,因为页面已经存在,所以导致IE实际并不向服务器请求,所以数据没有变化。还以为是EJB方面的问题,看来不是。
改进方法如下:
xHRObject.open("GET","./countServlet" +"?url="+href.slice(21) + "&value=" + Number(new Date) ,true);
其中url为我要的参数,而value只是取时间值,这样每次执行,这个值必然不同,也不会有缓存问题存在,IE必须执行。