解决struts2 acton redirect 后不能刷新的问题 另:实现页面框架局部刷新的方法

 

在实际过程中,对message 进行了删除或者标记已读的操作后,action 进行redirect ,希望重新进入messaeg 显示页面:

 

   <result name="readOrDeleteMessages" type="redirectAction">messageAction!findMessages?userId=${userId}&amp;messageType=inAll&amp;timeSeconds=${timeSeconds}
                      </result>

 

 

但页面不能刷新,发现findMessages  这个Action 已经执行过了,并且数据库里的数据已经完成了修改操作。

baidu 了一下,都没有找到适用的方法。

 我想到了之前写过的一个PHP 网页,使用了 AJAX 来进行数据操作,返回原始页面时显示的也还是当时的方法。原因在于前后两个URL 的请求是一样的,PHP 页面当然不会刷新页面。为此,我在URL 后面添加了当前时间来使每个URL 都不可能相同。那个问题很快就解决了

 

但是在这里,我也用到了在URL 中添加时间,但还是不能刷新页面。因为操作前的数据放在session中,重新进入页面时,从session 中取出的数据相同,因此没有刷新JSP 页面。

 

 

然后我想到了程序自动刷新页面的方式来实现。因为删除和标记已读请求都是使用  JQuery 的$.post  来实现的,我就可以在 ajax 的回调函数来实现页面刷新

 

但是又因为这个我自己用来练习的项目,我大胆使用了  frame  页面框架来实现页面的显示。主页面分三个部门:

 <frameset rows="20%,80%">
<frame noresize="noresize" frameborder="0" scrolling="no" src="jsp/top.jsp">
 
     <frameset cols="14%,86%">
    <frame noresize="noresize" frameborder="0" scrolling="no" src="jsp/middleLeft.jsp">
       <frame name="mainContent" noresize="noresize" frameborder="0" scrolling="yes" src="jsp/middleRight.jsp">

 

 

其中,显示主要操作界面的frame 名为  mainContent,我只希望刷新 mainContent frame ,如果刷新主页面

http://localhost:8092/SSH/loginValidAction!validLogin.action

则是重新进入系统,还得重复一遍刚才的所有操作

 

baidu 了一下,

window.parent.frames["bottom"].location.reload();

JavaScript这个语句可以实现我想要的功能:

 

我的JS 代码如下:

 

 $.post(
                    $url,
                    function(){
                    window.parent.frames["mainContent"].location.reload();}
                    )

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值