将代码解析为错误消息
我们已经讨论了数据绑定和验证。本节将涵盖输出与验证错误对应的消息。在前一节中展示的示例中,我们拒绝了name
和age
字段。如果我们想要通过使用MessageSource
输出错误消息,我们可以使用拒绝字段时提供的错误代码(在本例中为'name'和'age')。当您调用(直接调用或间接调用,例如使用ValidationUtils
类)rejectValue
或Errors
接口中的其他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。