当前位置: 首页 > 知识库问答 >
问题:

控制器建议不通过带有FileTooLargeException注释的执行方法处理FileTooLargeException

唐利
2023-03-14

我的rest控制器包含以下post映射:

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

ServiceExceptionn是特定于我的应用程序的自定义异常。

控制器建议如下所示:

@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){
      }
}

应用yml包含以下属性:

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

如果我使用大小大于2MB的文件调用rest api,则会出现以下异常:

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

我在这里面临的问题是:控制器的建议没有按照预期工作。handleFileTooLargeException-必须执行此方法,因为它使用特定异常类型中提到的ExceptionHandler进行注释。但相反,控制进入控制器建议的处理方法。

无法理解我在这里遗漏了什么。

共有1个答案

狄玉书
2023-03-14

您需要ExceptionTranslator类来扩展响应实体ExceptionHandler类以启用带有@ExceptionHandler注释的方法

 类似资料:
  • 我正在使用Spring MVC 4.1为restful Web服务添加速率限制。 我创建了一个注释,可以应用于控制器方法。Spring AOP方面会拦截对这些方法的调用,并在请求过多时引发异常: 这一切都非常有效,除非控制器方法的参数标记为,例如: 问题:如果验证失败,验证器会抛出由@ExceptionHandler处理的,它会向客户端返回错误响应,永远不会触发我的,因此绕过速率限制。 如何以优先

  • 问题内容: 我试图在带注释的控制器之后使用AOP进行一些处理。一切都在正常运行,但没有执行建议。 这是控制器代码: 以及在application-config中的设置 和实际的建议 甚至可以对带注释的控制器提出建议吗?我正在使用Spring 2.5。 问题答案: 我假设你想在用注释的类中执行所有方法后提出建议@Controller。 这是一个例子: 如果你想将Spring AOP与AspectJ语

  • 我正在使用注释处理器来处理方法参数的注释。 用于参数的注释类型有一个注释@参数 现在,当注释处理器运行时,我想检查参数注释()是否有参数注释。我通过执行以下代码来实现这一点。 由于某种原因,arg始终为空。是否有注释未返回的原因?

  • 问题内容: 有没有理由不将Controller映射为接口? 在所有的示例和问题中,我看到了周围的控制器,都是具体的类。是否有一个原因?我想将请求映射与实现分开。但是,当我尝试在具体类中获取a 作为参数时,我碰壁了。 我的Controller界面如下所示: And the implementing class: 该方法效果很好;在抛出一个异常 如果我将注释添加到具体类中,那么一切都会按预期工作,但是

  • 我试图创建一个在realm.io之上工作的注释处理器。遗憾的是,要使用realm,你需要一个android项目,而要创建一个注释处理器,你需要一个java项目(以便导入javax.annotation.processing.*) 有人知道如何在android库上导入AbstractProcessor和所有其他需要的东西吗?我找不到这样做的方法(已经将目标兼容性和源兼容性切换到1.7)

  • 在我添加了一个Spring Security过滤器后,这就停止工作了。 部署应用程序时,映射按预期配置 提交GET请求。 请求参数是由ExtJS添加的,这不是一个问题,因为它在没有安全性的情况下工作。