来自属性的Hibernate验证消息

时间:2016-10-09 13:07:54

标签: spring hibernate validation

我正在尝试从属性文件中获取自定义消息,但我不能。 我的配置:

@Bean
public LocalValidatorFactoryBean localValidatorFactoryBean() {
    LocalValidatorFactoryBean bean = new LocalValidatorFactoryBean();
    bean.setValidationMessageSource(messageSource());
    return bean;
}

@Bean
public MessageSource messageSource() {
    ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource();
    messageSource.setBasename("classpath:/messages/ValidationMessages");
    messageSource.setDefaultEncoding("UTF-8");
    messageSource.setFallbackToSystemLocale(true);
    return messageSource;
}

必须有效的类:

public class NewUserDto {
    @NotEmpty(message = "{NotEmpty.newUserDto.email}")
    private String email;
}

我的属性文件中的值:NotEmpty.newUserDto.email = Some value. 但相反Some value我得{NotEmpty.newUserDto.email},为什么会这样?

2 个答案:

答案 0 :(得分:0)

如果我理解正确,你试图从属性文件中注入一个String消息,在其中有一个条目:

NotEmpty.newUserDto.email

并且它有一个值,在bean验证失败的情况下应该充当您的消息错误。

在这种情况下:

首先,使用表达式语言来注入属性。像这样:

@Component
public class NewUserDto {
    @Value("${NotEmpty.newUserDto.email}")
    private String msg;

    @NotEmpty(message = msg)
    private String email;
}

不要忘记使用@Component注释注释您的类并将其转换为bean以执行此@Value注入。当然,您必须在下一个配置文件中添加:

<context:component-scan base-package="package.to.NewUserDto" />

您可以尝试直接执行此操作:

@Component
public class NewUserDto {

    @NotEmpty(message = @Value("${NotEmpty.newUserDto.email}"))
    private String email;
}

答案 1 :(得分:0)

如果您使用的是java配置。您可以参考以下示例:

Delcare这样的豆子

public class Employee implements Serializable {     

    @Email @NotEmpty
    private String email;
}

自定义消息位于messages.properties文件

Email.employee.email=Please provide a valid Email address

此文件已添加到WebMvcConfigurerAdapter

@Bean
public MessageSource messageSource() {
    ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource();
    messageSource.setBasename("messages");
    return messageSource;
}

我在帖子Spring MVC Form Validation Annotation Example

中找到了这个例子