表單三個欄位:編號 (`Integer`)、姓名 (`String`)、性別 (`String`)。僅在編號欄輸入漢字提交時拋出 The request sent by the client was syntactically incorrect. (HTTP 400)。
Spring MVC 自動將請求參數綁定到 `UserInfo` 對象。`userId` 類型為 `Integer`,提交非數字字符串 (如「測試」) 時,**類型轉換失敗**,拋出 `TypeMismatchException`,默認返回 400。
@ControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(TypeMismatchException.class)
public String handleTypeMismatch(TypeMismatchException e, Model model) {
model.addAttribute("error", "編號必須為數字");
return "user_form"; // 返回表單頁
}
}
提供的 `UTFFilter` 配置正確 (`request.setCharacterEncoding("utf-8")`),但**必須在讀取參數前執行** (Filter 順序靠前),且對 `multipart/form-data` 無效 (需 `MultipartFilter` 或 `StandardServletMultipartResolver`)。