2
我試圖修改現有的Spring Boot應用程序以支持多語言錯誤消息。我已經改變了註釋的屬性,如下所示:特定於語言環境的錯誤消息的插值
@Size(min = 2, max = 75, message = "Book.name.Size")
private String name;
我messages_en.properties
樣子:
Book.name.Size =名稱必須是{}分鐘之間{MAX}字符
的的MessageSource配置如下:
@Configuration
public class MessageSourceConfig extends WebMvcConfigurerAdapter {
@Bean
public MessageSource messageSource() {
ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource();
messageSource.setBasename("classpath:messages");
messageSource.setDefaultEncoding("UTF-8");
messageSource.setCacheSeconds(600);
return messageSource;
}
@Bean
public LocaleChangeInterceptor localeChangeInterceptor() {
LocaleChangeInterceptor localeChangeInterceptor = new LocaleChangeInterceptor();
localeChangeInterceptor.setParamName("lang");
return localeChangeInterceptor;
}
@Bean
public LocaleResolver localeResolver() {
SessionLocaleResolver sessionLocaleResolver = new SessionLocaleResolver();
sessionLocaleResolver.setDefaultLocale(Locale.ENGLISH);
return sessionLocaleResolver;
}
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(localeChangeInterceptor());
}
@Bean
public LocalValidatorFactoryBean validator()
{
LocalValidatorFactoryBean localValidatorFactoryBean = new LocalValidatorFactoryBean();
localValidatorFactoryBean.setValidationMessageSource(messageSource());
return localValidatorFactoryBean;
}
}
如果VA泰倫進入過小/大返回,這樣用戶看到的正是不包含插值最小值/最大值錯誤消息:
名稱必須是{分鐘}之間{MAX}字符
我試圖改變對房地產的註釋,包括大括號:
@Size(min = 2, max = 75, message = "{Book.name.Size}")
private String name;
但現在我收到一個錯誤,而不是:
org.springframework.context.NoSuchMessageException:沒有在代碼中發現的消息「這個名字必須在2到75個字符之間」對語言區域「en」
它必須與配置的問題,但我不知道知道問題出在哪裏?
而不是'{}分鐘'和'{MAX}''使用{0}'和'{ 1}'。 –
我試過了,但現在的迴應是'名稱必須在{0}和{1}個字符之間 –