【发布时间】:2016-01-18 21:42:43
【问题描述】:
首先,我是 Vaadin 7 的新手。当我发现 BeanFieldGroup.class 时,我只是在尝试一些 vaadin 演示。正如我所看到的,这个类将一个字段绑定到一个 bean 属性。在 bean 中,属性使用验证约束注释 (JSR 303) 进行注释。在这种情况下,我的 pom.xml 包含休眠验证器依赖项:
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>5.1.0.CR1</version>
</dependency>
我制作了 ValidationMessage.properties 文件并放了一些消息,(带有匈牙利字符)并且它已保存为 UTF-8 格式,例如:
validation.NotBlank=Árvíztűrő tükörfúrgép
这里是带注释的 bean 属性:
@NotNull(message = "{validation.NotBlank}")
private String name = null;
我可以看到,当我将字段值更改为 null 时,Vaadin 会显示我之前的约束错误消息,但字符编码错误。
另一方面 - 没有 Vaadin,但 Spring,我可以使用下一个简单的公式,其中字符编码适合我(如您所见,我使用 Spring ReloadableResourceBundleMessageSource):
private MessageSource MessageSource(){
ReloadableResourceBundleMessageSource reloadableResourceBundleMessageSource = new ReloadableResourceBundleMessageSource();
reloadableResourceBundleMessageSource.setCacheSeconds(5000);
reloadableResourceBundleMessageSource.setFallbackToSystemLocale(false);
reloadableResourceBundleMessageSource.setDefaultEncoding("UTF-8");
Properties properties = new Properties();
properties.setProperty("fileEncodings", "UTF-8");
reloadableResourceBundleMessageSource.setFileEncodings(properties);
reloadableResourceBundleMessageSource.setBasename("classpath:/locales/messages");
return reloadableResourceBundleMessageSource;
}
@Bean
public LocalValidatorFactoryBean validator(){
LocalValidatorFactoryBean factory = new LocalValidatorFactoryBean();
factory.setValidationMessageSource(MessageSource());
return factory;
}
我的问题是:谁能告诉我正确的解决方案如何配置休眠验证器或 Vaadin 以读取 UTF-8 编码的属性文件?
【问题讨论】:
标签: spring utf-8 vaadin7 hibernate-validator