我们讨论了数据绑定和验证。本节介绍与验证错误相对应的输出消息。在上一节所示的示例中,我们拒绝了名称和年龄字段。如果我们想使用MessageSource输出错误消息,我们可以使用拒绝字段时提供的错误代码(在本例中为“name”和“age”)。当你使用(例如,ValidationUtils类)rejectValue或Errors接口中的其他reject方法之一调用(直接或间接)时,基础实现不仅注册你传入的代码,而且还注册许多其他错误代码。MessageCodesResolver确定Errors接口寄存器的错误代码。默认情况下,将使用DefaultMessageCodesResolver,它(例如)不仅用你提供的代码注册消息,还注册包含你传递给reject方法的字段名的消息。因此,如果使用rejectValue(“age”,“too.darn.old”)拒绝字段,除了too.darn.old代码,spring还注册too.darn.old.age和too.darn.old.age.int(第一个包括字段名,第二个包括字段类型)。这样做是为了帮助开发人员确定错误消息的目标。
有关MessageCodesResolver和默认策略的详细信息,请分别在MessageCodesResolver和DefaultMessageCodesResolver的javadoc中找到。