Class Violation

java.lang.Object
io.leandev.appfuse.exception.Violation

public class Violation extends Object

Bean Validation 驗證違規

專門處理 Bean Validation 的錯誤訊息,使用 Named Parameters。 符合 JSR 303/380 Bean Validation 標準。

Named Parameters 格式

  • 使用 ${key} 格式:例如 "Age must be at least ${value}"
  • 參數使用 Map 傳遞:例如 {"value": 18}
  • 符合 Bean Validation 標準屬性名稱:min, max, value, regexp 等

使用範例

// Bean Validation 註解
@Min(value = 18, message = "Age must be at least ${value}")
private Integer age;

// 建立 Violation
Map<String, Object> params = Map.of("value", 18);
Violation violation = new Violation("age", "Age must be at least ${value}", params);

// 格式化結果
violation.toString(); // "Age must be at least 18"
  • Constructor Details

    • Violation

      public Violation(String[] props, String message, Map<String,Object> params)
      建構驗證違規(完整版)
      Parameters:
      props - 違規的屬性路徑(支援巢狀屬性,例如 ["user", "address", "zipCode"])
      message - 訊息模板(使用 ${key} Named Parameters)
      params - Named Parameters(例如 {"min": 2, "max": 10})
    • Violation

      public Violation(String prop, String message, Map<String,Object> params)
      建構驗證違規(單一屬性)
      Parameters:
      prop - 違規的屬性名稱
      message - 訊息模板(使用 ${key} Named Parameters)
      params - Named Parameters
    • Violation

      public Violation(String prop, String message)
      建構驗證違規(無參數,訊息已格式化)
      Parameters:
      prop - 違規的屬性名稱
      message - 已格式化的錯誤訊息
    • Violation

      public Violation(String message, Map<String,Object> params)
      建構驗證違規(無屬性,有參數的全域訊息)
      Parameters:
      message - 訊息模板(使用 ${key} Named Parameters)
      params - Named Parameters
    • Violation

      public Violation(String message)
      建構驗證違規(無屬性,全域訊息)
      Parameters:
      message - 已格式化的錯誤訊息
  • Method Details

    • getMessage

      public String getMessage()
    • getProps

      public String[] getProps()
    • getParams

      public Map<String,Object> getParams()
    • toString

      public String toString()

      格式化訊息,使用 Named Parameters

      將訊息模板中的 ${key} 替換為對應的參數值。

      範例

      • message = "Age must be at least ${value}"
      • params = {"value": 18}
      • 結果 = "Age must be at least 18"
      Overrides:
      toString in class Object
      Returns:
      格式化後的訊息