SpringMVC有一种生成错误代码的策略,用于呈现绑定错误的错误消息:MessageCodesResolver。
如果设置了spring.mvc.message-codes-resolver.format属性前缀PREFIX_ERROR_CODEPOSTFIX_ERROR_CODE,则spring boot将为您创建一个DefaultMessageCodesResolver。

DefaultMessageCodesResolver
DefaultMessageCodesResolver是MessageCodesResolver接口的默认实现类。

将按以下顺序(使用带前缀的格式化程序时)为对象错误创建两个消息代码:

1.:代码+“.”+对象名称
2.:代码

将按以下顺序为字段规范创建四个消息代码:
1.:代码+“.“+对象名称+”.“+字段
2.:代码+“.”+字段
3.:代码+“.”+字段类型
4.:代码

例如,如果代码“typemismatch”,对象名“user”,字段“age”:
1。尝试“typeMismatch.user.age”
2。尝试“ttypeMismatch.age”
3。尝试“typeMismatch.int”
4。尝试“typeMismatch”

因此,可以利用此解析算法来显示绑定错误的特定消息,如“必需”和“类型不匹配”:

在对象+字段级别(“年龄”字段,但仅在“用户”上);
在字段级别(所有“年龄”字段,无论对象名称如何);
或在一般级别(所有字段,在任何对象上)。

对于数组、列表或映射属性,将生成特定元素和整个集合的代码。假设对象“user”中数组“groups”的字段“name”:
1。尝试“typeMismatchuser.groups[0].name”
2。尝试“typeMismatch.user.groups.name”
3。尝试“typeMismatch.groups[0].name”
4。尝试“typeMismatch.groups.name”
5。尝试“typeMismatch.name”
6。尝试“TyrimeSimult.java. Lang.Stand”
7。尝试“typeMismatch”

默认情况下,错误代码将放在构造的消息字符串的开头。messageCodeFormatter 属性可用于指定可选的串联格式。

为了将所有代码分组到资源束中的特定类别中,例如“validation.typeMismatch.name”,而不是默认的“typeMismatch.name”,请考虑指定要应用的前缀。