將程式碼解析為錯誤訊息

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

關於 MessageCodesResolver 和預設策略的更多資訊,請分別查閱 MessageCodesResolverDefaultMessageCodesResolver 的 javadoc。