将错误代码解析为错误信息
我们讨论了数据绑定和验证。本节将介绍如何输出与验证错误相对应的消息。在前一节中展示的示例中,我们拒绝了name和age字段。如果我们想使用MessageSource来输出错误消息,就可以通过在拒绝这些字段时提供的错误代码来实现(在本例中就是“name”和“age”)。当你调用Errors接口中的rejectValue或其他任何reject方法(无论是直接调用,还是通过ValidationUtils类等间接调用)时,底层实现不仅会注册你传入的错误代码,还会注册一些额外的错误代码。MessageCodesResolver负责确定Errors接口所注册的错误代码。默认情况下,使用的是DefaultMessageCodesResolver,该解析器不仅会注册你提供的错误代码对应的消息,还会注册包含字段名的消息(例如,如果你使用rejectValue("age", "too.darn.old")来拒绝“age”字段,那么Spring除了会注册“too.darn.old”这个错误代码外,还会注册“too.darn.old.age”和“too.darn.old.age.int”这两个错误代码;其中“too.darn.old.age”包含了字段名,“too.darn.old.age.int”则包含了字段的类型)。这样做的目的是为了方便开发者理解错误消息。