在Spring中如何覆盖默认表单错误按摩?
我正在使用Validator
和属性文件来添加我自己的错误消息,但是
如何覆盖在转换/编码错误上打印的消息,例如?
它们似乎是自动生成的,我认为对用户没有帮助:
Failed to convert property value of type java.lang.String to required type java.lang.Double for property minPrice; nested exception is java.lang.NumberFormatException:
答案 0 :(得分:6)
您可以通过在本地化软件包中创建自定义消息来覆盖默认值,其中的密钥遵循Spring DefaultMessageCodeResolver
定义的约定。为了完整起见,这里是其文档的相关部分:
将为对象错误创建两个消息代码,如下所示 顺序(使用前缀格式化程序时):
1.: code + "." + object name 2.: code
将为字段规范创建四个消息代码 以下顺序:
1.: code + "." + object name + "." + field 2.: code + "." + field 3.: code + "." + field type 4.: code
例如,如果是代码" typeMismatch",对象名称"用户",字段 "年龄":
1. try "typeMismatch.user.age" 2. try "typeMismatch.age" 3. try "typeMismatch.int" 4. try "typeMismatch"
因此可以利用该分辨率算法来示出 绑定错误的特定消息,如" required"和 " typeMismatch":
at the object + field level ("age" field, but only on "user"); at the field level (all "age" fields, no matter which object name); or at the general level (all fields, on any object).
如果是数组,列表或地图属性,则两个代码都是特定的 生成元素和整个集合。假设一个领域 "名称"一个数组" groups"在对象"用户":
1. try "typeMismatch.user.groups[0].name" 2. try "typeMismatch.user.groups.name" 3. try "typeMismatch.groups[0].name" 4. try "typeMismatch.groups.name" 5. try "typeMismatch.name" 6. try "typeMismatch.java.lang.String" 7. try "typeMismatch"
默认情况下,errorCodes将放在开头 构造消息字符串。 messageCodeFormatter属性可以是 用于指定替代级联格式。
为了将所有代码分组到您的代码中的特定类别 资源包,例如" validation.typeMismatch.name"而不是 默认" typeMismatch.name",考虑指定一个前缀 应用