首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Java Web 分頁隱藏域失效:缺少 name 屬性導致參數不提交

     編輯:程式設計綜合問答

在 JSP 分頁功能中,使用 `document.getElementById("cp").value = num` 設置隱藏域值,點擊「首頁/上一頁/下一頁」按鈕提交表單,但後台始終接收不到頁碼,默認跳轉第一頁。根因極其隱蔽:**隱藏域缺少 `name` 屬性**。

問題代碼

<form name="spform" action="<%=URL%>" method="post">
    <input type="button" value="首頁" onclick="go(1)">
    <input type="button" value="上一頁" onclick="go(<%=currentPage-1%>)">
    <input type="button" value="下一頁" onclick="go(<%=currentPage+1%>)">
    <input type="button" value="尾頁">
    <!-- 關鍵錯誤:只有 id,沒有 name -->
    <input type="hidden" id="cp" value="1">
</form>

為什麼會失效?

HTML 表單提交時,**只有擁有 `name` 屬性的表單控件** 其數據才會被打包發送到服務器。`id` 僅用於客戶端 DOM 操作(如 `getElementById`),不參與表單提交。因此後台收不到 `cp` 參數,使用默認值 `1`。

修正代碼

<!-- 添加 name="cp" -->
<input type="hidden" id="cp" name="cp" value="1">

補充建議:完善分頁邏輯

  1. 尾頁功能缺失: 原代碼「尾頁」按鈕無 `onclick`,需補全:
    `<input type="button" value="尾頁" onclick="go(<%=pagenumber%>)">`
  2. 邊界檢查: `go()` 函數中應判斷 `num` 是否在 `1` 到 `pagenumber` 範圍內。
  3. 使用 `

修正後的完整片段

<script>
function go(num) {
    // 邊界保護
    var maxPage = <%=pagenumber%>;
    if (num < 1) num = 1;
    if (num > maxPage) num = maxPage;
    
    document.getElementById("cp").value = num;
    document.spform.submit();
}
</script>

<form name="spform" action="<%=URL%>" method="post">
    <button type="button" onclick="go(1)">首頁</button>
    <button type="button" onclick="go(<%=currentPage-1%>)">上一頁</button>
    <button type="button" onclick="go(<%=currentPage+1%>)">下一頁</button>
    <button type="button" onclick="go(<%=pagenumber%>)">尾頁</button>
    <input type="hidden" id="cp" name="cp" value="1">
</form>

加上 `name` 屬性,分頁跳轉即刻生效。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved