將程式碼解析為錯誤訊息
我們已經介紹了資料繫結和驗證。本節將介紹如何輸出與驗證錯誤對應的訊息。在上一節中顯示的示例中,我們拒絕了 name
和 age
欄位。如果想使用 MessageSource
輸出錯誤訊息,可以使用拒絕欄位時提供的錯誤程式碼(在此示例中為 'name' 和 'age')。當你呼叫(直接或間接,例如使用 ValidationUtils
類) rejectValue
或 Errors
介面中的其他 reject
方法時,底層實現不僅會註冊你傳入的程式碼,還會註冊許多額外的錯誤程式碼。MessageCodesResolver
決定 Errors
介面註冊哪些錯誤程式碼。預設情況下,使用 DefaultMessageCodesResolver
,它(例如)不僅會註冊帶有你給定的程式碼的訊息,還會註冊包含你傳遞給 reject 方法的欄位名稱的訊息。因此,如果你使用 rejectValue("age", "too.darn.old")
拒絕一個欄位,除了 too.darn.old
程式碼之外,Spring 還會註冊 too.darn.old.age
和 too.darn.old.age.int
(第一個包含欄位名稱,第二個包含欄位型別)。這樣做是為了方便開發人員定位錯誤訊息。
關於 MessageCodesResolver
和預設策略的更多資訊,請分別查閱 MessageCodesResolver
和 DefaultMessageCodesResolver
的 javadoc。