我正在寻找的东西很容易解释: 我的表格必须支持意大利语和英语。假设我有一个名字输入文本字段。表格标签将是:
我想要的是像这样的验证错误消息
请注意我在错误消息中引用字段名称。
我有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
现在,在我的自定义验证器类中,我有
ValidationUtils.rejectIfEmpty(errors, "firstname", "errors.empty.field", new Object[]{"registration.form.firstname"}, "the First Name is required");
无效。输出是“registration.form.username”字符串。我想在运行时使用适当的语言环境注入字段名称。有办法吗?
答案 0 :(得分:2)
这是一种方法,但应该有更好的方法:
将messageSource
注入Controller或验证器:
@Autowired MessageSource messageSource
在您的控制器@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
的句柄