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