[英]How to automatically reload a jsp based on other page action
可以這樣實現。 請遵循上述步驟
1]單擊頁面A中的編輯按鈕時,將該行的ID作為請求參數傳遞給頁面B。
2]在頁面B中,JSP接收行的ID,並將其存儲在隱藏的元素中。
3]在頁面A中創建一個JavaScript函數,該函數應接收行ID和修改后的數據作為參數。 讓我們將此函數命名為updateRows(rowId,modifiedData)。 在此函數中,使用JavaScript編寫代碼以使用修改后的數據更新ID為“ rowId”的代碼
4]現在,當您單擊頁面B中的“保存並關閉”按鈕時,請使用對服務器的調用來保存數據。 如果保存成功,則調用函數updateRows,將存儲在隱藏元素中的rowId和修改后的數據作為參數傳遞給它。 此功能將使用最新數據更新DOM。
這樣,您將避免進行服務器調用以刷新數據
Spring MVC滿足您要求的方法是:
Edit
按鈕應該是鏈接到B頁的鏈接,並帶有要編輯的行的ID,例如<a href="$pageBUrl?id=$rowId" class="editButton">Edit</a>
B頁中的SaveAndClose
按鈕應該是一個提交按鈕,該按鈕將編輯后的值發布到控制器方法中。 在服務器端處理之后,控制器方法應重定向到頁面A。作為副作用,您使用PostRedirectGet模式 ,該模式避免了您要再次發送的丑陋內容……?”
@RequestMapping(path = "...", method = RequestMethod.POST) public String saveAndClose(...) { ... return "redirect:/path/to/pageA"; }
當然,這將在同一窗口中顯示所有頁面。
如果要在頁面B的“ Save & Close
上重新顯示包含pageA的窗口,同時仍允許服務器知道保存內容,則應重定向到一個特殊頁面(例如pageC),該頁面僅包含要求瀏覽器重新顯示的javascript代碼頁面A。 您可以在隱藏字段中傳遞包含pageA的窗口的名稱,也可以確定作為Web應用程序的程序員,您應該知道應該在哪里。
如果您不想使用ajax,則還有另一種方法。
在頁面A中,定義一個JavaScript函數refreshPageA()。 在此功能中,添加頁面刷新邏輯。 當您單擊頁面B中的“保存並關閉”按鈕時,將數據保存在服務器中並轉發到純jsp。 在此JSP中,聲明一個onload處理程序。 在onload處理程序中添加以下代碼
opener.refreshPageA(); window.close()
opener.refreshPageA(); window.close()
這將刷新pageA和關閉B頁窗口
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.