5.3 通过错误编码得到错误信息
前面我们谈到数据绑定和数据校验。如何拿到校验错误信息是我们最后需要讨论的一个问题。在上面的例子中,
我们拒绝了name
和age
属性。如果我们想要输出校验错误的提示信息,就要用到校验失败时设置的错误编码(本例中就是name
和age
)。
当你调用Errors
接口中的rejectValue
方法或者它的任何一个方法,它的优先实现不仅仅会注册作为参数传入进来的错误编码,
还会注册一些遵循一定规则的错误编码。注册哪些规则的错误编码取决于你使用的MessageCodesResolver
。当我们使用默认的DefaultMessageCodesResolver
时,除了会将错误信息注册到你指定的错误编码上之外,这些错误信息还会注册到包含属性名的错误编码上。假如你调用这样一个方法rejectValue("age", "too.darn.old")
,
Spring除了会注册too.darn.old
这个错误编码外,还会注册too.darn.old.age
和too.darn.old.age.int
这两个错误编码(即一个是包含属性名,另外一个既包含属性名还包含
类型);这在Spring中作为一种约定,这样所有的开发者都能按照这种约定来定位错误信息了。
想要获取更多有关MessageCodesResolver
和默认的策略,可以通过下面的在线文档获取: MessageCodesResolver
DefaultMessageCodesResolver
,