Jer*_*emy 5 validation spring spring-mvc bean-validation
验证表单支持对象后,我得到一个BindingResult,其中包含FieldError的列表。每个FieldError都有一个defaultMessage。该消息集如何设置,为什么不使用Spring MessageSource?我希望该默认消息是从Spring的MessageSource派生的。
编辑: 我看到在FieldError对象中正确设置了错误代码。这只是该对象中的默认消息不是来自我的MessageSource。例如,当我为int字段输入字符串时,我希望它从messages.properties获取消息:
typeMismatch=Invalid type was entered.
Run Code Online (Sandbox Code Playgroud)
我可以获取该消息的唯一方法是,如果我将FieldError对象带入并手动将其传递到MessageSource中,如下所示:
messageSource.getMessage(fieldError, null); // This gets my message from messages.properties.
Run Code Online (Sandbox Code Playgroud)
如果您使用Validator,则可以在 Validator 实现类的 MessageSource 中指定消息的键,通常使用 ValidationUtils 方法。Spring 文档的 6.2 节有一个很好的例子。
如果您使用的不是验证器(例如 JSR-303 Bean 验证),Spring 也会尝试按照约定解析错误代码。
假设您有一个名为“Address”的表单支持对象,其中包含一个名为“zipcode”的 int 字段。如果用户在邮政编码字段中输入字符串,默认情况下 Spring 将使用 DefaultMessageCodesResolver并在 MessageSource 中查找名为“typeMismatch.address.zipcode”的键。如果找不到该键,它将尝试“typeMismatch.zipcode”,然后“typeMismatch.int”,然后“typeMismatch”。
或者,您可以实现自己的MessageCodesResolver。
| 归档时间: |
|
| 查看次数: |
6761 次 |
| 最近记录: |