Проверка объекта на основе проверки объекта DTO - PullRequest
0 голосов
/ 18 апреля 2020

Я хочу проверить свой объект из CSV-файла на основе моего объекта DTO CustomerFailedPaymentDto , прежде чем я обработаю его. Я использую @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;
}

Как убедиться, что объект i файл get from csv действителен на основании проверки моего класса DTO?

1 Ответ

2 голосов
/ 18 апреля 2020

Проверка должна быть запущена, в вашем случае пружина не делает этого.

Использовать 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));
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...