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

Java 獲取 HTML 表單多值字段:Select/Radio/Checkbox 統一處理指南

     編輯:Java 程式設計入門

核心 API

String[] values = request.getParameterValues("fieldName");
單值用 getParameter(),多值必須用 getParameterValues(),否則只能拿到第一個值。

前端表單三大多值場景

1. <select multiple> 下拉多選


<select name="cities" size="4" multiple>
  <option value="bj">北京</option>
  <option value="sh">上海</option>
  <option value="gz">廣州</option>
  <option value="sz">深圳</option>
</select>

用戶按住 Ctrl/Shift 多選,提交時瀏覽器發送:cities=bj&cities=sh&cities=gz

2. 同名 Radio/Checkbox 群組


<!-- Radio 單選但同 name,瀏覽器仍以數組發送 -->
<input type="radio" name="gender" value="M"> 男
<input type="radio" name="gender" value="F"> 女

<!-- Checkbox 多選 -->
<input type="checkbox" name="hobby" value="read"> 閱讀
<input type="checkbox" name="hobby" value="game"> 遊戲
<input type="checkbox" name="hobby" value="sport"> 運動

3. 動態生成的同名輸入框 (JS 新增行)


<input type="text" name="emails" value="a@test.com">
<input type="text" name="emails" value="b@test.com">
<input type="text" name="emails" value="c@test.com">

後端統一處理代碼


@WebServlet("/form-handler")
public class MultiValueServlet extends HttpServlet {
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws IOException {
        req.setCharacterEncoding("UTF-8");
        
        // 統一獲取多值數組
        String[] cities = req.getParameterValues("cities");
        String[] gender = req.getParameterValues("gender"); // 長度 1
        String[] hobbies = req.getParameterValues("hobby");
        String[] emails = req.getParameterValues("emails");
        
        // 安全處理:可能為 null (未勾選/未填寫)
        printArray("城市", cities);
        printArray("性別", gender);
        printArray("愛好", hobbies);
        printArray("郵箱", emails);
        
        // 業務邏輯:存入資料庫、驗證等
        // ...
    }
    
    private void printArray(String label, String[] arr) {
        if (arr == null || arr.length == 0) {
            System.out.println(label + ": [未選擇]");
        } else {
            System.out.println(label + ": " + Arrays.toString(arr));
        }
    }
}

常見坑點與對策

坑點現象對策
用 getParameter() 取多值只得到第一個值堅持用 getParameterValues()
未勾選任何 Checkbox參數完全不存在,getParameterValues() 返回 null判空處理,視為空數組
中文亂碼值變亂碼req.setCharacterEncoding("UTF-8") 在讀取前調用
前端 name 不一致無法聚合同組輸入框必須同 name
Spring MVC 綁定直接用 List<String> 或 String[] 接收@RequestParam("hobby") List<String> hobbies

Spring MVC 最佳實踐


@PostMapping("/submit")
public String submit(
    @RequestParam(value = "cities", required = false) String[] cities,
    @RequestParam(value = "hobby", required = false) List<String> hobbies,
    @RequestParam(value = "emails", required = false) String[] emails
) {
    // 業務處理
    return "success";
}

Spring 自動將同名參數綁定到數組/集合,required=false 允許未提交該參數。

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