【问题标题】:Validate object based on DTO object validation基于 DTO 对象验证来验证对象
【发布时间】:2020-04-18 15:39:17
【问题描述】:

我想在处理之前根据我的 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.";
        }

    }

CustomerFailedPaymentDto.java

@Data
public class CustomerFailedPaymentDto {
    private Long id;
    @NotEmpty(message = "Please provide a bankPartner")
    private String bankPartner;

    @NotEmpty(message = "Please provide a bankCoreCode")
    private String bankCoreCode;

    @NotEmpty(message = "Please provide a transactionDate")
    private String transactionDate;
}

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

【问题讨论】:

    标签: java spring-boot validation spring-validator


    【解决方案1】:

    验证需要被触发,在你的情况下 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));
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-04-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-10
      • 2015-10-24
      • 2023-03-23
      相关资源
      最近更新 更多