简单的Spring Boot Web应用程序。 配置片段:
@Bean
public MessageSource validationMessageSource() {
ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource();
messageSource.setBasename("ValidationMessages");
messageSource.setDefaultEncoding("UTF-8");
return messageSource;
}
@Bean
public Validator validator() {
LocalValidatorFactoryBean localValidatorFactoryBean = new LocalValidatorFactoryBean();
localValidatorFactoryBean.setValidationMessageSource(validationMessageSource());
return localValidatorFactoryBean;
}
我将defaultEncoding
设为UTF-8
。我有ValidationMessages.properties
文件,用UTF-8编码(我的IntelliJ说的是,notepad ++这样说)并且包含不同的字符。
我有一个简单的网页(使用Freemarker创建)。该页面上有一些静态的UTF-8文本,并且显示正确。
当我提交位于该页面上的表单时,我希望看到正确的错误消息,但是当验证失败时(JSR-303 / JSR-349验证)我可以看到类似于обовÑзкове поле. min 2, max 15 ÑимволÑв
的那些' sa来自.properties
的邮件,但邮件编码错误!
这是页面(简化:没有div,css,js等):
<#import "/spring.ftl" as spring/>
<!DOCTYPE html>
<html lang="en">
<head>
<title>ShareMyCar</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
</head>
<body>
<form action="/registration" method="POST">
<@spring.formInput path="modelObj.name" />
<@spring.showErrors "<br>"/>
<input type="submit" class="btn btn-primary" value="Submit" />
</form>
</body>
</html>
我需要做些什么才能让它发挥作用?
答案 0 :(得分:0)
Java会在本地化捆绑包上自动采用ISO-8859-1编码。
请参阅:https://docs.oracle.com/javase/7/docs/api/java/util/Properties.html#load(java.io.InputStream)
要使其正常工作,请将文件另存为ISO-8859-1,或使用转义序列,例如\ u1234。