Java 无法上传带@Pathvariable 可选的文件

Java can't upload file with @Pathvariable optional

我尝试构建一个具有上传文件功能的todoapp。现在我想可以在任务中上传文件,或者只是在没有任务的情况下上传文件。为此,我需要 @PathVariable 注释是可选的。

这是我的控制器:

@PostMapping("/upload/{taskId}")
private ResponseEntity<String> uploadFile(@CurrentUser UserPrincipal userPrincipal, @RequestParam("file") MultipartFile[] file, @PathVariable(required = false) String taskId) {
    fileService.upload(userPrincipal.getUser(), file, taskId);
    return new ResponseEntity<>("File uploaded", HttpStatus.OK);
}

如果我尝试使用 TaskId 上传它,它会起作用。但是当我尝试在没有 taskId 的情况下上传时,它不起作用。我收到错误:

“405 方法不允许”[=1​​3=]

截图:

有人知道如何解决这个问题吗?

如果你想使用 @PathVariable 作为可选,请确保绑定两个路径:@PostMapping(value = {"/upload/{taskId}", "/upload"}).

如果您不 post,taskId spring 将寻找处理 "/upload" 而不是 "/upload/{taskId}"

的控制器

我个人会使用 RequestParam 而不是 PathVariable 作为可选参数