首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Struts 多選框提交後保持勾選狀態的正確做法

     編輯:Java 相關知識

在 Struts 應用中,表單提交驗證失敗返回原頁面時,如何保持多選框的勾選狀態?關鍵在於 ActionForm 中每個多選框對應獨立的屬性名稱,而非共用同一屬性。

錯誤示範

若多個 `` 使用相同的 `property` 屬性,提交後只會保留最後一個值,導致勾選狀態丟失。

正確實作

JSP 頁面

<html:checkbox property="testBox1" value="chargeStat01">處罰開始</html:checkbox>
<html:checkbox property="testBox2" value="chargeStat01">處罰開始</html:checkbox>

ActionForm 類別

public class ChargeStatForm extends ActionForm {
    private String testBox1;
    private String testBox2;

    public String getTestBox1() { return testBox1; }
    public void setTestBox1(String testBox1) { this.testBox1 = testBox1; }

    public String getTestBox2() { return testBox2; }
    public void setTestBox2(String testBox2) { this.testBox2 = testBox2; }
}

原理解析

Struts 表單標籤根據 `property` 屬性對應 ActionForm 的 getter/setter。每個多選框擁有獨立屬性時,框架能正確將提交的參數綁定至對應欄位,重新渲染頁面時 `` 會自動檢查屬性值是否等於 `value`,相符則輸出 `checked="checked"`。若共用屬性,後提交的值會覆蓋先前值,導致狀態錯亂。

最佳實踐建議

  • 使用集合或陣列屬性 (如 `String[] checkboxValues`) 配合索引式屬性存取,更適合動態數量的多選框群組
  • 搭配 `` 標籤簡化陣列綁定
  • 前端驗證與後端驗證雙重保障,提升使用者體驗
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved