将错误代码解析为错误消息
我们已经介绍了数据绑定和验证。本节将介绍输出与验证错误相对应的消息。在 上一节 所示的示例中,我们拒绝了 name 和 age 字段。如果我们要使用 MessageSource 输出错误消息,我们可以使用拒绝字段时提供的错误代码(在本例中为 'name' 和 'age')来实现。当您调用(直接或间接,例如通过使用 ValidationUtils 类) Errors 接口中的 rejectValue 或其他 reject 方法时,底层实现不仅会注册您传入的代码,还会注册许多附加的错误代码。MessageCodesResolver 决定了 Errors 接口注册哪些错误代码。默认情况下,使用 DefaultMessageCodesResolver,它(例如)不仅注册带有您提供的代码的消息,还会注册包含您传递给拒绝方法的字段名称的消息。因此,如果您使用 rejectValue("age", "too.darn.old") 拒绝一个字段,除了 too.darn.old 代码之外,Spring 还会注册 too.darn.old.age 和 too.darn.old.age.int(第一个包含字段名称,第二个包含字段类型)。这样做是为了方便开发人员定位错误消息。
有关 MessageCodesResolver 和默认策略的更多信息,请分别参见
MessageCodesResolver 和
DefaultMessageCodesResolver 的 javadoc。