Я хотел бы проверить данные еще до того, как они будут обработаны на уровне сервиса.
@Validated
public class DataDto {
@NotBlank
@NotNull
String keyId;
Я бы хотел, чтобы когда Джексон начал преобразовывать json в dto, то обращая внимание на аннотации над полями DTO объекта, он отправлял ответ с ошибками
@RestController
@RequestMapping(API_V3)
@Validated
public class DataRestController {
@PostMapping(path = "data")
public ResponseEntity<DataDto>
createNewModelBasedUploadFile(@RequestBody @Valid List<DataDto> modelList) {
}
Обратите внимание, что здесь я проверяю набор значений.
это я тоже поставил
@Configuration
public class ValidConfig {
@Bean
MethodValidationPostProcessor methodValidationPostProcessor() {
return new MethodValidationPostProcessor();
}
}
Валидация не происходит.
Может быть, вам все же нужно написать свой валидатор? Но как я могу подключить и настроить его здесь?
Я просмотрел много таких вопросов здесь и в сети. Но я не нашел решения. По сути, вся проверка происходит, когда объект пытается сохранить в базе данных....
У кого-нибудь есть идеи, как решить эту проблему?
Подведем итог:
1. @Vaidated - должен быть установлен поверх RestController.
@RestController
@RequestMapping(API_V3)
@Validated
public class DataRestController {
}
2. @Valid - должен быть установлен рядом с типом коллекции
createNewModelBasedUploadFile(@RequestBody List<@Valid DataDto> modelList)
{
}
3. @Validated - не требуется Java dto-object.
4. Java dto-object — должен иметь любую аннотацию для проверки над собственными полями.
public class DataDto {
@NotBlank
@NotNull
String keyId;
}
5.- пом.xml
Я не указываю на эту зависимость
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
но в pom.xml есть:
<dependency>
<artifactId>validation-api</artifactId>
<groupId>javax.validation</groupId>
<version>2.0.1.Final</version>
</dependency>
6.Конфигурационный файл - тоже не нужен.
@Configuration
public class ValidConfig {
@Bean
MethodValidationPostProcessor methodValidationPostProcessor() {
return new MethodValidationPostProcessor();
}
}
Пожалуйста попробуйте
createNewModelBasedUploadFile(@RequestBody List<@Valid DataDto> modelList)