?
? ????? PHP ??? ???? ??? ?? ??
我們已經(jīng)討論了數(shù)據(jù)綁定和校驗。最后我們來討論一下與校驗錯誤相對應(yīng)的錯誤信息輸出。在先前的示例中,我們對name
和age
字段進(jìn)行了校驗并發(fā)現(xiàn)了錯誤。如果我們想用MessageSource
來輸出錯誤信息,當(dāng)某個字段校驗出錯時(在這個例子中是name和age)我們輸出的是錯誤代碼。無論你直接或者間接使用示例中的ValidationUtils
類來調(diào)用Errors
接口中rejectValue
方法或者任何一個其它的reject
方法,底層的實現(xiàn)不僅為你注冊了你傳入的代碼,還同時為你注冊了許多額外的錯誤代碼信息。而你使用的MessageCodesResolver
將決定究竟注冊什么樣的錯誤代碼。默認(rèn)情況下,將會使用DefaultMessageCodesResolver
?;氐角懊娴睦樱褂?code class="literal">DefaultMessageCodesResolver,不僅會為你注冊你提供的錯誤代碼信息,同時還包含了你傳入到reject方法中的字段信息。所以在這個例子中,你通過rejectValue("age", "too.darn.old")
來注冊一個字段校驗錯誤。Spring不僅為你注冊了too.darn.old
這個代碼,同時還為你注冊了too.darn.old.age
和too.darn.old.age.int
來分別表示字段名稱和字段的類型。這種是現(xiàn)實為了方面開發(fā)者來定位錯誤信息。
更多有關(guān)MessageCodesResolver
的信息以及默認(rèn)的策略可以在線訪問相應(yīng)的JavaDocs:
MessageCodesResolver
和
DefaultMessageCodesResolver
。