簡體   English   中英

如何基於其他頁面操作自動重新加載jsp

[英]How to automatically reload a jsp based on other page action

我遇到無法解決的情況,這就是為什么需要您的幫助。 我有一個jsp頁面(在下面的圖片中用A表示),其中有很多行,每個行都可以編輯。 在A jsp頁面的末尾,有一個用於打印頁面數據的選項。 現在,如果某個正文單擊編輯鏈接/按鈕,則將打開另一個頁面,其中包含該特定行的數據,並且用戶可以修改第二頁(i,e B)中的數據。 現在,我希望用戶保存B頁面后,A頁面應自動刷新以提供更新的數據以供打印。

請指導我如何做到這一點。 我正在為Java應用程序使用Spring MVC框架。 圖形示例

可以這樣實現。 請遵循上述步驟

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滿足您要求的方法是:

  • A頁中的“ 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM