gpt4 book ai didi

java - errorArgs 中的 Spring 3 验证 : using messages. 属性条目?

转载 作者:搜寻专家 更新时间:2023-10-31 20:29:38 25 4
gpt4 key购买 nike

我要找的东西很容易解释:我有一个必须同时支持意大利语和英语的表格。假设我有一个名字输入文本字段。表单标签将是:

  • 对于 EN:“名字”
  • 对于 IT:“Nome”

我想要的是像这样的验证错误信息

  • 对于 EN:“名字 字段是必需的”
  • 对于 IT:“il campo Nome è richiesto”

请注意,我在错误消息中引用了字段名称

我有 messages_en.properties,其中包含以下行:

errors.empty.field = the {0} field is required
registration.form.firstname = First Name

当然还有 messages_it.properties 行:

errors.empty.field = il campo {0} è richiesto
registration.form.firstname = Nome

现在,在我的自定义 validator 类中有

ValidationUtils.rejectIfEmpty(errors, "firstname", "errors.empty.field", new Object[]{"registration.form.firstname"}, "the First Name is required");

这不能正常工作。输出是“registration.form.username”字符串。我想在运行时使用正确的语言环境注入(inject)字段名称。有办法吗?

最佳答案

这是一种方法,但应该有更好的方法:

messageSource 注入(inject) Controller 或 validator :

@Autowired MessageSource messageSource

在你的 Controller @RequestMapping 方法中,将 Locale 作为参数,Spring 会为你填充它。

@RequestMapping(...)
public String myMethod(..., Locale locale){
ValidationUtils.rejectIfEmpty(errors, "firstname", "errors.empty.field", new Object[]{messageSource.getMessage("registration.form.firstname", new Object[]{}, locale)}, "the First Name is required");
....
}

更新:

您可以使用 LocaleContextHolder 在 Validator 中获取 Locale 的句柄|

关于java - errorArgs 中的 Spring 3 验证 : using messages. 属性条目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13238946/

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