解決struts2 acton redirect 後不能重新整理的問題 另:實現頁面框架區域性重新整理的方法
在實際過程中,對message 進行了刪除或者標記已讀的操作後,action 進行redirect ,希望重新進入messaeg 顯示頁面:
<result name="readOrDeleteMessages" type="redirectAction">messageAction!findMessages?userId=${userId}&messageType=inAll&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();}
)