【问题标题】:Java Validating a extended PojoJava 验证扩展的 Pojo
【发布时间】:2018-04-11 10:30:43
【问题描述】:

我正在 Spring Boot 上构建项目,并希望添加易于集成的验证。 我的项目有 Pojo,如下所示:

public class Employee{ 
    @JsonProperty("employeeInfo")
    private EmployeeInfo employeeInfo;
}

EmployeeInfo 类如下:

public class EmployeeInfo extends Info {
    @JsonProperty("empName")
    private String employeeName;
}

信息类如下:

@JsonIgnoreProperties(ignoreUnknown = true)
public class Info {
    @JsonProperty("requestId")
    protected String requestId;
}

如何使用 javax.validation 验证请求 ID 是否为空

我的控制器类如下:

@RequestMapping(value = "/employee/getinfo", method = RequestMethod.GET, consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<> getEmployee(@RequestBody Employee employee) {
    //need to validate input request here
    //for e.g to check if requestId is not blank
}

请求:

{
  "employeeInfo": {
    "requestId": "",
  }
}

【问题讨论】:

    标签: java spring validation spring-boot javax


    【解决方案1】:

    考虑到您正在使用 validation-api

    请尝试使用下面来验证您的字符串是否不为空或不包含任何空格

    @NotBlank

    【讨论】:

      【解决方案2】:

      为了验证控制器方法中的请求参数,您可以使用内置验证器或自定义验证器(您可以使用自定义消息添加任何类型的验证。)

      关于如何在 spring 控制器中使用自定义验证的详细信息,Check how to validate request parameters 与验证器如下所示:

      @Component
      public class YourValidator implements Validator {
      
      @Override
          public boolean supports(Class<?> clazz) {
              return clazz.isAssignableFrom(Employee.class);
      }
      
      @Override
          public void validate(Object target, Errors errors) {
              if (target instanceof Employee) {
                 Employee req = (Employee) target;
                 ValidationUtils.rejectIfEmptyOrWhitespace(errors, "employeeInfo.requestId", "YourCustomErrorCode", "yourCustomErrorMessage");
      
                 //Or above validation can also be done as
                 if(req.getEmployeeInfo().getRequestId == null){
                     errors.rejectValue("employeeInfo.requestId", "YourCustomErrorCode", "YourCustomErrorMessage");
                 }
              }
          }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-08-31
        • 1970-01-01
        • 1970-01-01
        • 2012-12-24
        • 2015-07-19
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多