访问密钥的正确语法是
@Size( min=3, max=5, message="{validator_invalid_state_name}" )
但问题是,在默认设置中,密钥查找不会针对您的custom.properties进行,而是针对Spring的ValidationMessages.properties.所以最快捷的方式来帮助你运行是创建一个ValidationMessages.properties(和18n当量)并添加你的密钥,例如
validator_invalid_state_name=Invalid name ({min}, {max})
这是最简单的解决方案,没有配置问题.
现在,既然你想从你的属性文件中提供这个,那么,它是可行的,但是你必须找到一个合适的配置.对于Spring 4.x,这将是正确的xml和java配置.
Java配置
@Bean(name = "messageSource")
public MessageSource messageSource()
{
ReloadableResourceBundleMessageSource bean = new ReloadableResourceBundleMessageSource();
bean.setBasename("classpath:text");
bean.setDefaultEncoding("UTF-8");
return bean;
}
@Bean(name = "validator")
public LocalValidatorFactoryBean validator()
{
LocalValidatorFactoryBean bean = new LocalValidatorFactoryBean();
bean.setValidationMessageSource(messageSource());
return bean;
}
@Override
public Validator getValidator()
{
return validator();
}
XML配置
classpath:custom
对于Spring mvc 3.x,您将无法在LocalValidatorFactoryBean上找到validationMessageSource属性,因为您必须创建消息插补器并进行设置.你在这个主题http://forum.spring.io/forum/spring-projects/web/78675-jsr-303-validation-spring-mvc-and-messages-properties中有一个例子.希望它有所帮助