gpt4 book ai didi

java - 如何使用 i18n 在我的 Controller 中返回自定义 hibernate 验证消息?

转载 作者:行者123 更新时间:2023-11-30 10:25:34 25 4
gpt4 key购买 nike

我使用 Spring Boot、Hibernate validator 和 Thymeleaf。

当我验证表单项时一切正常。

但是我添加验证码后,我检查它是否是错误的代码;

当代码错误时,我添加一个新的 FieldError 并返回它。

if (!captchaCode.equalsIgnoreCase(user.getVrifyCode())) {
bindingResult.addError(new FieldError("user", "vrifyCode", "{singup.vrifycode.error}"));
}

当然,我在我的 ValidationMessages.properties 文件中定义了 singup.vrifycode.error

但在网页上它只是显示 singup.vrifycode.error 而不是正确的值。

但在我的模型中一切正常,如下所示:

@NotBlank(message="{signup.email.null}")
@Email(message="{signup.email.fomart}")
private String email;

如何在我的页面中显示正确的值?

如果不能,请告诉我如何在 ValidationMessages_en_US.properties、ValidationMessages_ja_JP.properties 等中获得正确的值(按语言环境)。

谢谢!

最佳答案

首先我们必须了解这里混合了两种不同的验证 API:s;首先是使用 BindingResultFieldError 类的 Spring 验证,然后是带有注释的 Bean Validation API (Hibernate Validator)。好消息是 Spring 会翻译来自 Bean Validation API 的验证错误,因此它们可以协同工作。

一个区别是 Spring 不在其翻译键周围使用 {}(在 spring 中称为 codes),将其保留在介意。

对于 i18n,您必须使用 FieldError 的 7 参数构造函数:

new FieldError("user", "vrifyCode", user.getVrifyCode(), false, new String[] {"singup.vrifycode.error"}, null, null)

请注意,翻译应该在 Spring 消息文件中,因为我们在这里使用的是 Spring 验证。

关于java - 如何使用 i18n 在我的 Controller 中返回自定义 hibernate 验证消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46112138/

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