Java 基于DTO对象验证的对象验证

Java 基于DTO对象验证的对象验证,java,spring-boot,validation,spring-validator,Java,Spring Boot,Validation,Spring Validator,在处理之前,我想根据DTO CustomerFailedPaymentDto对象验证csv文件中的对象。我使用@Valid,但仍然不起作用 Mycontroller.java @PostMapping("/proccessFile") public String proccessFile(@RequestParam("file") MultipartFile file) { // parse CSV file to create a list of `User` object

在处理之前,我想根据DTO CustomerFailedPaymentDto对象验证csv文件中的对象。我使用@Valid,但仍然不起作用

Mycontroller.java

@PostMapping("/proccessFile")
    public String proccessFile(@RequestParam("file") MultipartFile file) {

     // parse CSV file to create a list of `User` objects
        try (Reader reader = new BufferedReader(new InputStreamReader(file.getInputStream()))) {

            // create csv bean reader
             CsvToBean<CustomerFailedPaymentDto> csvToBean = new CsvToBeanBuilder(reader)
                                .withType(CustomerFailedPaymentDto.class)
                                .withIgnoreLeadingWhiteSpace(true)
                                .build();

            // I WANT TO VALIDATE THIS OBJECT                
            List <@Valid CustomerFailedPaymentDto> customerFailedPayment = csvToBean.parse();

            return virtualAccountService.buildFailedQuery(customerFailedPayment);                             

        } catch (Exception ex) {
           return "An error occurred while processing the CSV file.";
        }

    }

如何根据DTO类验证确保从csv文件中获取的对象有效?

需要触发验证,在您的情况下,spring不会这样做

使用
javax.validation.Validator

自动连线验证器优先

@Autowired
private final Validator validator;
然后使用验证器对每个列表项进行验证

Set<ConstraintViolation<CustomerFailedPaymentDto>> violations = validator.validate(perCustomerFailedPayment);
if (!violations.isEmpty()) {
  throw new ConstraintViolationException(new HashSet<ConstraintViolation<?>>(violations));
}
Set inflictions=validator.validate(perCustomerFailedPayment);
如果(!inflictions.isEmpty()){

抛出new ConstraintViolationException(new HashSet需要触发验证,在您的情况下,spring不会这样做

使用
javax.validation.Validator

自动连线验证器优先

@Autowired
private final Validator validator;
然后使用验证器对每个列表项进行验证

Set<ConstraintViolation<CustomerFailedPaymentDto>> violations = validator.validate(perCustomerFailedPayment);
if (!violations.isEmpty()) {
  throw new ConstraintViolationException(new HashSet<ConstraintViolation<?>>(violations));
}
Set inflictions=validator.validate(perCustomerFailedPayment);
如果(!inflictions.isEmpty()){
抛出新的ConstraintViolationException(新哈希集