Совет контроллера не обрабатывает FileTooLargeException путем исключения метода, аннотированного с помощью FileTooLargeException - PullRequest
0 голосов
/ 02 мая 2020

Контроллер моего отдыха содержит следующее пост-отображение:

@PostMapping
    public ResponseEntity<RespDTO> uploadDocument(@ModelAttribute  @Valid RequestDTO requestDTO,@RequestParam(value = "fileContent") MultipartFile fileContent) throws  ServiceException, URISyntaxException { }

ServiceExceptionn - это пользовательское исключение, определяющее c для моего приложения.

Совет контроллера выглядит следующим образом:

@ControllerAdvice
public class ExceptionTranslator implements ProblemHandling, SecurityAdviceTrait {

    @Override
    public ResponseEntity process(@Nullable ResponseEntity<Problem> entity, NativeWebRequest request) {

     }

    @ExceptionHandler(FileTooLargeException.class)
    public ResponseEntity<ResponseDTO> handleFileTooLargeException(FileTooLargeException ex, @Nonnull NativeWebRequest request){
      }
}

application.yml содержит свойство ниже:

spring:
  servlet:
    multipart:
      max-file-size: 2MB

Если я вызову остальные API, используя файл размером более 2 МБ, я получаю исключение ниже:

 io.undertow.server.handlers.form.MultiPartParserDefinition$FileTooLargeException: UT000054: The maximum size 5242880 for an individual file in a multipart request was exceeded

Проблема, с которой я сталкиваюсь здесь: совет контроллера не работает в соответствии с ожиданиями. handleFileTooLargeException - этот метод должен быть выполнен, потому что он аннотирован ExceptionHandler, упомянутым с указанным c типом исключения. Но вместо этого управление переходит к методу процесса совета контроллера.

Не в состоянии понять, чего мне здесь не хватает.

1 Ответ

0 голосов
/ 02 мая 2020

Вам необходим ExceptionTranslator класс для расширения ResponseEntityExceptionHandler класса, чтобы включить методы с @ExceptionHandler аннотацией

...