当前位置: 首页 > 知识库问答 >
问题:

如何使用注释获取JSR303验证的message属性中写入的消息

薄腾
2023-03-14

我的设想是:

我有一个带有JSR303验证的pojo类,如下所示:

  public class Customer{

        String customerId;
        String name;
        BigDecimal salary;

        @NotNull(message = "CustomerId is mandatory")
        @Size(max = 7, message = "Invalid length for customerId")
        public void getCustomerId(){   
              return customerId;        
        }

         @NotNull(message = "Name is mandatory")
         public void getName(){   
              return name;        
        }

        @Digits(integer=5, fraction=3, message="Invalid length for salary")
        public void getSalary(){   
              return salary;        
        }

  }

我的要求是,我想知道哪个特定字段没有通过验证,我想把消息写在“消息”属性中。

目前,我能够跟踪字段名称,但不能跟踪“消息”属性中存在的消息。

我使用以下方法。

  public void validateCustomer(Customer customer){

       Errors errors = this.errorFactory.getInstance(Customer, 
       Customer.class.getName());
       jsrValidator.validate(customer, errors);
       if(errors.hasErrors()){
             if(errors.getFieldError() != null){
                   //fieldName that failed to validate.
                   String fieldName = errors.getFieldError().getField();

                   //I also want the message written in the attribute 
                     "message" of the annotation.

              }
       }
  }

我还希望将消息写在注释的属性“消息”中。我怎样才能得到它?有可能这样做吗?

共有1个答案

吴鸿禧
2023-03-14

什么是jsrValidator?我认为它应该是Validator的一个实例,并且有一个返回Set的验证(...)方法。并且消息应该在每个ConstraintViolation实例上可用。

 类似资料:
  • 假设我有以下课程: 是否可以通过“MyProduct”类验证“code”属性?比如:

  • 我有一个kotlin类,它的属性有一个Java的注释,但是我不能用Java反射访问这些注释: 以下测试打印为空: 如何获取给定kotlin属性的注释?

  • 我正在使用Hibernate@NotNull验证器,我正在尝试创建自定义消息来告诉用户哪个字段在空时产生了错误。类似这样的东西: (这将在我的ValidationMessages.properties文件中)。 其中,{0}应该是通过以下方式传递给验证程序的字段名: 我有办法做到吗?

  • 我知道如果我们知道注释类,我们可以很容易地获得特定的注释并访问其属性。例如: 它将返回特定注释接口的引用,因此您可以轻松访问其值。 我的问题是,我是否对特定的注释类没有预先了解。我只想在运行时使用反射来获取所有注释类名及其属性,以便将类信息转储为例如JSON文件。我怎样才能以简单的方式做到这一点。 此方法将仅返回注释接口的动态代理。

  • 如果我有: 我可以通过使用getBean方法之一获得bean和资源。然而,我不知道如何获取属性值。 显然,我可以创建一个具有@Value属性的新bean,如: 我在Application Context对象上调用什么方法来获得该值而无需自动装配bean? 我通常使用@Value,但有一种情况是SPeL表达式需要是动态的,所以我不能只使用注释。

  • 我昨天让它工作,然后我做了一些事情,现在我一直试图修复它几个小时,我只是无法让它工作了。 我有一个包含