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

define messages based on locale in hibernate validations

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

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

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

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

我在 messages.propertiesapplication.properties

中都定义了 notEmpty

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

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

添加到您的配置

@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.namenaming convention 之后。