在休眠验证中根据语言环境定义消息

时间:2018-12-23 02:57:18

标签: spring hibernate lombok

我正尝试使用验证错误消息基于当前的活动语言环境,如下所示

@Entity
@Table(name = "footable")
public class TestModel extends BaseEntity {
   @NotEmpty(message = "${notEmpty}")
   private String name;
}

但是似乎无法解析属性,我得到

EL expression '${notEmpty}' references an unknown property

我在notEmptymessages.properties中都定义了application.properties

我还尝试使用@Value中的lombok,这会导致编译时错误而不是运行时错误。

2 个答案:

答案 0 :(得分:1)

添加到您的配置

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

@Bean
public LocalValidatorFactoryBean validatorFactoryBean() {
    LocalValidatorFactoryBean validatorFactoryBean = new LocalValidatorFactoryBean();
    validatorFactoryBean.setValidationMessageSource(messageSource());
    validatorFactoryBean.setApplicationContext(context);
    return validatorFactoryBean;
}

从注释中删除消息

public class TestModel extends BaseEntity {
    @NotEmpty
    private String name;
}

messages.properties添加消息为

NotEmpty.testModel.name=The message of error

NotEmpty.testModel.name之后是naming convention

答案 1 :(得分:0)

不需要$,请改用message = "{notEmpty}"