5.3 将代码解析成错误消息
在之前我们已经谈论了数据绑定和验证,最后一件值得讨论的事情是输出对应于验证错误的消息。在我们上面展示的例子里,我们拒绝了name
和age
字段。如果我们要使用MessageSource
来输出错误消息,我们将会使用我们在拒绝该字段(这个情况下是’姓名’和’年龄’)时给出的错误代码。当你调用(不管是直接调用还是间接通过使用ValidationUtils
类调用)来自Errors
接口的rejectValue
或者其他reject
方法时,其底层实现不仅会注册你传入的代码,还会注册一些额外的错误代码。注册怎样的错误代码取决于它所使用的MessageCodesResolver
,默认情况下,会使用DefaultMessageCodesResolver
,其不仅会使用你提供的代码注册消息,还会注册包含你传递给拒绝方法的字段名称的消息。所以如果你使用rejectValue("age", "too.darn.old")
来拒绝一个字段,除了too.darn.old
代码,Spring还会注册too.darn.old.age
和too.darn.old.age.int
(第一个会包含字段名称且第二个会包含字段类型)。这样做是为了方便开发人员来定位错误消息等。
有关MessageCodesResolver
和其默认策略的更多信息可以分别在MessageCodesResolver
以及DefaultMessageCodesResolver
的在线java文档中找到。