将代码解析为错误消息
我们已经介绍了数据绑定和验证。本节将介绍如何输出与验证错误对应的消息。在上一节中显示的示例中,我们拒绝了 name
和 age
字段。如果想使用 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。