解决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();}
)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值