`
yangshen998
  • 浏览: 1248488 次
文章分类
社区版块
存档分类
最新评论

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

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics