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