跳到主要内容

将代码解析为错误消息

ChatGPT-4o 中英对照 Resolving Codes to Error Messages

我们已经讨论了数据绑定和验证。本节介绍如何输出与验证错误相对应的消息。在前一节中展示的示例中,我们拒绝了 nameage 字段。如果我们想使用 MessageSource 输出错误消息,可以使用我们在拒绝字段时提供的错误代码(在这种情况下是 'name' 和 'age')。当你调用(直接或间接地,例如通过使用 ValidationUtils 类)rejectValueErrors 接口中的其他 reject 方法时,底层实现不仅会注册你传入的代码,还会注册许多附加的错误代码。MessageCodesResolver 决定了 Errors 接口注册哪些错误代码。默认情况下,使用 DefaultMessageCodesResolver,它不仅注册了你提供的代码的消息,还注册了包含你传给 reject 方法的字段名称的消息。例如,如果你使用 rejectValue("age", "too.darn.old") 拒绝一个字段,除了 too.darn.old 代码外,Spring 还会注册 too.darn.old.agetoo.darn.old.age.int(第一个包括字段名称,第二个包括字段的类型)。这样做是为了方便开发人员在定位错误消息时使用。

关于 MessageCodesResolver 和默认策略的更多信息可以在 MessageCodesResolverDefaultMessageCodesResolver 的 javadoc 中分别找到。