При использовании @Valid аннотация @RequestPart не вызывает валидатор. В других местах я использовал @Valid с @RequestBody, и он отлично работает.
Также нет ошибки, просто прохождение неправильной проверки.
Ниже приведен код.
@InitBinder("campaignCreatorDTO")
public void initCreatorDTOBinder(WebDataBinder binder) {
binder.addValidators(new CreatorDTOValidator());
}
@PostMapping(value = "/creator", consumes = {"multipart/form-data"}, produces = {"application/json"})
@ResponseBody
@ResponseStatus(HttpStatus.CREATED)
public @Valid
ResponseDTO creator(@Valid @RequestPart("json") CampaignCreatorDTO campaignCreatorDTO,
@RequestPart(name = "file", required = false) MultipartFile adGraphic) {
}




Запустите проверку в методе контроллера с помощью Validator Bean:
org.springframework.validation.Validator
@Autowired
protected Validator validator;
PostMapping(value = "/creator", consumes = {"multipart/form-data"}, produces = {"application/json"})
@ResponseBody
@ResponseStatus(HttpStatus.CREATED)
public @Valid
ResponseDTO creator(@RequestPart("json") CampaignCreatorDTO campaignCreatorDTO,
@RequestPart(name = "file", required = false) MultipartFile adGraphic) {
validator.validate(campaignCreatorDTO);
}
все еще не вызывает валидатор. та же проблема сохраняется.
Я уже пробовал приведенный выше код, и он не вызывает валидатор.
Просмотрите ссылку ниже: stackoverflow.com/questions/21329426/…, а также предоставьте более подробную информацию о creatorDTO и CampaignCreatorDTO.
@Anjali, посмотрите этот пост stackoverflow.com/questions/31175009/…, используйте этот импорт org.springframework.validation.Validator
Как подробно описано в здесь, @InitBinder использует переданное ему значение для целевой проверки с такими же именованными параметрами запроса или атрибутами модели. Проблема в том, что у вас нет ни того, ни другого, поскольку вы используете ввод данных из нескольких частей в своей конкретной конечной точке /creator. Поэтому снятие ограничения именования с @InitBinder было бы решением.
@InitBinder
public void initCreatorDTOBinder(WebDataBinder binder) { ... }
Вы переопределяете валидатор и привязываете его к атрибуту модели. Извлеките
"campaignCreatorDTO"из@InitBinderи попробуйте еще раз. Если это не удается (потому что вы затем устанавливаете глобальный валидатор), попробуйте использовать имя аргументаjsonвместо имени аргумента модели.