我们已经讨论了数据绑定和校验。最后我们来讨论一下与校验错误相对应的错误信息输出。在先前的示例中,我们对name
和age
字段进行了校验并发现了错误。如果我们想用MessageSource
来输出错误信息,当某个字段校验出错时(在这个例子中是name和age)我们输出的是错误代码。无论你直接或者间接使用示例中的ValidationUtils
类来调用Errors
接口中rejectValue
方法或者任何一个其它的reject
方法,底层的实现不仅为你注册了你传入的代码,还同时为你注册了许多额外的错误代码信息。而你使用的MessageCodesResolver
将决定究竟注册什么样的错误代码。默认情况下,将会使用DefaultMessageCodesResolver
。回到前面的例子,使用DefaultMessageCodesResolver
,不仅会为你注册你提供的错误代码信息,同时还包含了你传入到reject方法中的字段信息。所以在这个例子中,你通过rejectValue("age", "too.darn.old")
来注册一个字段校验错误。Spring不仅为你注册了too.darn.old
这个代码,同时还为你注册了too.darn.old.age
和too.darn.old.age.int
来分别表示字段名称和字段的类型。这种是现实为了方面开发者来定位错误信息。
更多有关MessageCodesResolver
的信息以及默认的策略可以在线访问相应的JavaDocs:
MessageCodesResolver
和
DefaultMessageCodesResolver
。