gpt4 book ai didi

spring - 使用 Spring 的 MessageSource 设置 FieldError 默认消息

转载 作者:行者123 更新时间:2023-12-04 20:38:15 24 4
gpt4 key购买 nike

在验证表单支持对象后,我有一个 BindingResult,其中包含一个 FieldError 列表。每个 FieldError 都有一个 defaultMessage。该消息是如何设置的,为什么它不使用我的 Spring MessageSource?我希望从我的 Spring 的 MessageSource 派生该默认消息。

编辑:
我看到在 FieldError 对象中正确设置了错误代码。只是该对象中的默认消息不是来自我的 MessageSource。例如,当我为一个 int 字段输入字符串时,我希望它从 messages.properties 获取我的消息:

typeMismatch=Invalid type was entered.

我可以获得该消息的唯一方法是,如果我使用 FieldError 对象并将其手动传递到 MessageSource 中,如下所示:
messageSource.getMessage(fieldError, null);  // This gets my message from messages.properties.

最佳答案

如果您使用的是 Validator ,您可以在 Validator 实现类的 MessageSource 中指定消息的键,通常使用 ValidationUtils 方法。 Section 6.2 of the Spring documentation有一个很好的例子。

Spring 也会尝试resolve error codes按照惯例,如果您使用的不是像 JSR-303 Bean Validation 这样的验证器。

假设您有一个名为“Address”的表单支持对象,其中包含一个名为“zipcode”的 int 字段。如果用户为邮政编码字段输入字符串,默认情况下 Spring 将使用 DefaultMessageCodesResolver并在 MessageSource 中查找名为“typeMismatch.address.zipcode”的键。如果它没有找到那个键,它会尝试“typeMismatch.zipcode”,然后是“typeMismatch.int”,然后是“typeMismatch”。

或者,您可以实现自己的 MessageCodesResolver .

关于spring - 使用 Spring 的 MessageSource 设置 FieldError 默认消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13317221/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com