我们涵盖了 数据绑定 验证。本节涵盖了输出与验证错误相对应的信息。在上一节所示的例子中,我们拒绝了姓名和年龄字段。如果我们想通过使用 MessageSource 来输出错误信息,我们可以使用拒绝字段时提供的错误代码(本例中为 「name」和「age」)来实现。当你调用(无论是直接调用,还是间接调用,例如使用 ValidationUtils 类)rejectValue 或 Errors 接口的其他拒绝方法之一时,底层实现不仅注册了你传入的代码,而且还注册了一些额外的错误代码。MessageCodesResolver 决定了 Errors 接口注册哪些错误代码。默认情况下,使用 DefaultMessageCodesResolver,它(例如)不仅用你给的代码注册了一条消息,而且还注册了包括你传递给拒绝方法的字段名的消息。因此,如果你使用 rejectValue("age", "too.darn.old")拒绝一个字段,除了 too.darn.old代码外,Spring 还注册了 too.darn.old.agetoo.darn.old.age.int(第一个包括字段名,第二个包括字段的类型)。这样做是为了方便开发者在针对错误信息时提供帮助。

    关于 MessageCodesResolver 和默认策略的更多信息可以分别在 MessageCodesResolverDefaultMessageCodesResolver 的 javadoc 中找到。