Проверка бина для параметра запроса Springboot - PullRequest
0 голосов
/ 24 июня 2019

У меня есть сценарий использования, в котором у нас есть несколько параметров, передаваемых в контроллер REST, и параметры должны быть проверены на непустую, и некоторые пользовательские проверки. Кроме того, для некоторых параметров параметры фильтра поддерживаются с начальными значениями, заканчивающимися с. Я могу проверить параметры для первого уровня фильтра, но не могу заставить его работать для следующего уровня фильтра. Например: строка запроса - filter.firstname, и она поддерживается с необязательными аргументами начальных и конечных значений. Может ли кто-нибудь помочь, предоставив несколько советов о том, как я могу проверить параметр, когда кто-то передает filter.firstname или filter.firstname.startswith для непустых значений?

Это пример кода для контроллера.

 @GetMapping()
    public CustomerResponseData findCustomers(@Valid FilterCustomer filter, HttpServletRequest request)


public class FilterCustomer {

    @Valid
    private FilterCustomerCriteria filter;

}


public class FilterCustomerCriteria {

    @NotBlank
    private String firstname;

    @NotBlank
    private String lastname;
}


public class FilterCustomerFinerCriteria {

    @NotBlank
    private String startswith;

    @NotBlank
    private String endswith;
}```

1 Ответ

0 голосов
/ 24 июня 2019

Если я правильно вас понимаю, вы говорите, что в платформе проверки нет аннотаций для вашей пользовательской логики проверки в некоторых полях (@NotBlank недостаточно).

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

Здесь - ссылка на пример того, как это сделать, но резюмируем:

  • Вы должны реализовать класс, который реализует javax.validation.ConstraintValidator и добавить логику проверки в его public boolean isValid метод

  • Затем создайте пользовательскую аннотацию (например, @NotBlank but your own one) and set among other things a meta-annotation @ Constraint (validatedBy = {YourValidator.class})) `

Затем используйте эту аннотацию, как и любую другую аннотацию проверки

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...