在「保存按鈕與分頁列表同頁」的場景下,保存後若直接返回,分頁查詢常因未重新執行 SQL 而顯示舊數據。核心原因在於:保存動作結束時未重新觸發分頁查詢邏輯。
在保存 Action 的執行末尾,將 return mapping.findForward("success") 類型的跳轉改為 RequestDispatcher Forward 到分頁 Action:
// 保存成功後
servlet.getServletContext()
.getRequestDispatcher("/ProtectListPage.do")
.forward(request, response);
return null; // 關鍵:阻斷後續 forward/redirect
| 方式 | 請求對象 | 分頁 SQL 執行 | 地址欄 URL |
|---|---|---|---|
| Redirect (sendRedirect) | 新請求 | 視分頁邏輯而定,常不執行 | 變為分頁 Action URL |
| Forward (RequestDispatcher) | 同一請求 | 強制重新執行分頁 Action 邏輯(含 SQL) | 保持保存 Action URL |
Forward 共享 request/response 對象,分頁 Action 完整執行查詢邏輯,最新數據即時呈現。同理適用於修改、刪除操作。
來源:黑色頭發 https://heisetoufa.iteye.com