【问题标题】:Hibernate Validator : Custom MeassagesHibernate 验证器:自定义消息
【发布时间】:2017-09-25 14:18:43
【问题描述】:

我有一个 java 项目并在其中使用自定义休眠验证器。根据Hibernate Docs ,自定义错误消息应定义为 ValidateMessages.properties 中的键值,并且该文件必须在“类路径”目录中创建。 我的问题是类路径位于“目标”目录下,并且在清理构建项目后将被删除,因此创建的 .properties 文件将消失。怎么解决?

`@Target({FIELD, METHOD, PARAMETER, ANNOTATION_TYPE})
 @Retention(RUNTIME)
 @Constraint(validatedBy = NCValidator.class)
 @Documented
 public @interface NC {

String message() default "{msg}";

Class<?>[] groups() default {};

Class<? extends Payload>[] payload() default {};}

/////////////////////////////

     ` public class NCValidator implements 
      ConstraintValidator<NC, String> {

     @Override
     public void initialize(NC constraintAnnotation) {
     ConstraintValidator.super.initialize(constraintAnnotation);
      }

    @Override
    public boolean isValid(String string, ConstraintValidatorContext 
    context) {
    ...
    ...
    }

  }`

并在这样的类中使用此自定义验证器:

 `@ValidateNC
  default public String getNC() {
     return (String) get("nC");
  }
 `

【问题讨论】:

  • 放入src/main/resources
  • 我把它放在资源下,但它不起作用。我应该如何指向这个目录? @Ramanlfc

标签: java hibernate validation customvalidator validationmessage


【解决方案1】:

将您的.properties 文件放在您的resources 文件夹下或系统中的任何位置并指向它。

【讨论】:

  • 我在问题中添加了自定义验证器代码。但我不明白如何指向新文件地址。请解释
  • 你能分享一下你的项目结构吗?
  • 结构是什么意思?我定义了一个自定义验证器和一个注释,并在类中将该注释用于 bean 属性。然后我在目标/类中创建了“ValidateMessages.properties”并在其中定义了键值。它可以工作,但是在 clean-build 目标将消失之后。 @Samuel.F
  • 不要在target/classes上创建属性文件,将文件放在src/main/resources文件夹下。它将自动扫描并获取您的值。或者如果您更喜欢将文件放在其他位置,您可以这样做,并确保在加载资源时指向该文件位置。
猜你喜欢
  • 2019-04-21
  • 2013-10-04
  • 1970-01-01
  • 1970-01-01
  • 2012-03-03
  • 2012-12-12
  • 2017-12-06
相关资源
最近更新 更多