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

Spring MVC @ModelAttribute 報錯:缺少無參建構子導致 BeanInstantiationException

     編輯:程式設計綜合問答

錯誤堆疊 No default constructor found ... NoSuchMethodException: User.<init>() 表示 Spring 嘗試用**無參建構子**實例化 User 物件再注入屬性,但 User 類別僅定義了帶參建構子。

修正方法

在 User 類別加入 **public 無參建構子**:

public class User {
    // 現有屬性與帶參建構子...

    // 新增:Spring 需要的無參建構子
    public User() {}

    // getter/setter...
}

原理解析

  1. @ModelAttribute 方法先執行,將 User 放入 Map。
  2. 處理器方法 testmodelattribute(User user) 觸發資料綁定:Spring 實例化 User → 呼叫 setter 注入表單欄位。
  3. 實例化預設呼叫 new User(),缺少無參建構子即拋出異常。

最佳實踐

  • 所有表單綁定/資料傳輸物件 (DTO/VO) **必須提供 public 無參建構子**。
  • 若使用 Lombok,加上 @NoArgsConstructor 即可自動生成。
  • 不可變物件可改用 @ConstructorBinding (Spring 2.5+) 配合單一帶參建構子。

補上無參建構子,重新部署即可解決此錯誤。

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