多言語エラーメッセージをサポートするために、既存のSpringブートアプリケーションを変更しようとしています。ロケール固有のエラーメッセージ内の補間
@Size(min = 2, max = 75, message = "Book.name.Size")
private String name;
マイmessages_en.properties
は、次のようになります:
Book.name.Size =名前は{}分との間でなければなりません{最大}文字
を次のように私は、プロパティに注釈を変更しました
次のように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場合LUEは、ユーザが正確に見えるように、返されたエラーメッセージが補間最小/最大値が含まれていない大/それが小さ過ぎる入力されます。
間でなければなりません。名は{分}と{最大}文字
私は、中括弧を含めるようにプロパティに注釈を変更してみました:
@Size(min = 2, max = 75, message = "{Book.name.Size}")
private String name;
しかし、今、私が代わりにエラーが表示されます。
org.springframework.context.NoSuchMessageException:
(EN)コードの下では見つかりませんメッセージのロケールは「名前は2〜75文字の間でなければなりませんが、」それは、構成に問題があってはなりませんが、私はしないでください...どこに問題がある
'{分}'と '{最大}' '使用{0}'と '{ 1} '。 –
私はこれを試しましたが、レスポンスは '{0}から{1}文字の間でなければなりません –