在 Java Web (JSP/Servlet) 中,使用者選擇下拉選單項目觸發頁面跳轉或重新整理時,需將選中值透過 URL 參數傳遞,並在新頁面載入時根據參數恢復選中狀態。
function see() {
var select = document.getElementById('typeSelect');
var type = select.value; // 取得選中值
// 跳轉並帶參數
window.location.href = '${pageContext.request.contextPath}/page.action?type=' + encodeURIComponent(type);
}
方案 A:JSP 中直接判斷
<select id="typeSelect" name="type" onchange="see()">
<c:forEach items="${typeList}" var="item">
<option value="${item.value}"
${param.type == item.value ? 'selected' : ''}>${item.label}</option>
</c:forEach>
</select>
方案 B:JS onload 動態設定
window.onload = function() {
var type = getUrlParam('type'); // 解析 URL 參數
if (type) {
var select = document.getElementById('typeSelect');
for (var i = 0; i < select.options.length; i++) {
if (select.options[i].value == type) {
select.selectedIndex = i;
break;
}
}
}
};
function getUrlParam(name) {
var reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)');
var r = window.location.search.substr(1).match(reg);
return r ? decodeURIComponent(r[2]) : null;
}
onchange 觸發跳轉,攜帶 type=選中值 參數。request.getParameter("type") 或 JS 解析 URL 取得值。selected 屬性。若不想在 URL 暴露參數,可在 Servlet 中 session.setAttribute("selectedType", type),頁面讀取 Session 判斷,但需注意多標籤頁同步問題。