場景:父頁面彈出子窗口並傳遞 `id` 參數,子頁面提供模糊搜索,搜索提交後需保持原 `id` 參數不丟失,並正確傳遞給後端 Action。
原代碼問題:
// 錯誤:id 寫死為字符串 "i_receive",未使用傳入參數
window.open(".../showUserList.action?id=i_receive", ...);
// 搜索時未攜帶原 id
window.location = ".../searchUserList.action?userName=" + encodeURI(val);
function openNewWindow(id) {
window.open("<%=basePath%>user/showUserList.action?id=" + id,
'linkman', "width=260,height=345,top=200,left=" + ((screen.width/2)-200));
}
var urlParams = new URLSearchParams(window.location.search);
var originalId = urlParams.get('id'); // 獲取父頁面傳遞的 id
function doSearch() {
var userName = $("#searchInput").val();
var url = "<%=basePath%>user/searchUserList.action?userName=" + encodeURI(userName)
+ "&id=" + originalId; // 關鍵:保留原始 id
window.location = url;
}
public String searchUserList() {
String userName = request.getParameter("userName");
String id = request.getParameter("id"); // 獲取原始 id
// 業務邏輯...
return SUCCESS;
}
核心原則:URL 參數鏈路完整性。每次跳轉/提交都要主動攜帶上下文所需的所有標識參數。