I have trouble getting custom error messages to work with Spring 3.2. Here is my configs:
Config:
@Configuration
@EnableWebMvc
@EnableJpaRepositories(basePackages = {"com.."})
@EnableTransactionManagement
@ComponentScan(basePackages = {"com.."})
public class Config extends WebMvcConfigurerAdapter {
@Bean
public PersistenceExceptionTranslator jpaExceptionTranslator() {
return new HibernateExceptionTranslator();
}
@Bean
public FactoryBean<EntityManagerFactory> entityManagerFactory(
DataSource ds, JpaVendorAdapter jva) {
LocalContainerEntityManagerFactoryBean factoryBean =
new LocalContainerEntityManagerFactoryBean();
factoryBean.setPackagesToScan(new String[] { "com.." });
factoryBean.setDataSource(ds);
factoryBean.setJpaVendorAdapter(jva);
factoryBean.afterPropertiesSet();
return factoryBean;
}
@Bean
public PlatformTransactionManager transactionManager(EntityManagerFactory emf) {
JpaTransactionManager transactionManager = new JpaTransactionManager();
transactionManager.setEntityManagerFactory(emf);
return transactionManager;
}
@Bean
public ObjectMapper objectMapper() {
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.registerModule(new JodaModule());
objectMapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
return objectMapper;
}
@Bean
public MessageSource messageSource() {
ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource();
messageSource.setBasename("i18n/messages");
messageSource.setDefaultEncoding("UTF-8");
return messageSource;
}
@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
MappingJackson2HttpMessageConverter converter =
new MappingJackson2HttpMessageConverter();
converter.setObjectMapper(objectMapper());
converters.add(converter);
}
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/resources/**").addResourceLocations("/resources/");
}
}
And here's messages_en_US.properties file:
Pattern.userdto.email=Invalid email.
Pattern=Invalid syntax.
UserDTO class:
public final class UserDTO {
@Size(min = MIN_EMAIL_LENGTH, max = MAX_EMAIL_LENGTH)
@Pattern(regexp = EMAIL_PATTERN)
private String email;
...
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
...
}
Validation is triggered using javax.validation.Valid annotation.
I'm expecting that this would print out "Invalid email" when the given email doesn't match the pattern, but I'm getting "Invalid syntax" message.
LocalValidatorFactoryBeanreferring to this message source?