spring-mvc - spring-mvc中如何将多段URL映射到一个PathVariable?

标签 spring-mvc

我正在开发一个网络应用程序,其中一个功能是列出给定路径下的所有文件。我尝试将多个 URL 段映射到一个 PathVariable,如下所示:

@RequestMapping("/list/{path}")
public String listFilesUnderPath(@PathVariable String path, Model model) {
     //.... add the file list to the model
     return "list"; //the model name
}

它没有用。当请求 url 类似于 /list/folder_a/folder_aa 时,RequestMappingHandlerMapping 提示:“没有找到...的处理程序方法”

由于给定的路径可以包含任意数量的段,因此为每种可能的情况编写一个方法是不切实际的。

最佳答案

在 REST 中,每个 URL 都是一个单独的资源,所以我不认为你可以有一个通用的解决方案。我可以想到两个选项

  • 一种选择是将映射更改为 @RequestMapping("/list/**")(不再需要 path 参数)并从请求中提取整个路径
  • 第二个选项是创建几个方法,映射如 @RequestMapping("/list/{level1}"), @RequestMapping("/list/{level1}/{level2 }"), @RequestMapping("/list/{level1}/{level2}/{level3}")...连接方法体中的路径并调用一个方法工作。当然,这有一个缺点,即您只能支持有限的文件夹深度(如果对您来说不太丑的话,您可以使用这些映射创建十几种方法)

关于spring-mvc - spring-mvc中如何将多段URL映射到一个PathVariable?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28042834/

相关文章:

java - 如何在 Spring MVC 中基于 Profile 动态加载 Application.properties 文件?

java - Spring MVC Filter解决方案

java - ContextLoader - 上下文初始化失败

java - 从Spring Webflow调用函数存储在数据库(MySQL)中

java - Spring Boot 不会替换 Spring Tool Suite 版本 : 3. 8.4.RELEASE 中的系统变量 {user.home}

java - Spring MVC : How to store € character?

java - 尝试使用 CRUD 应用程序 Spring MVC MySql 创建新条目后需要帮助解决错误消息

java - 处理异常,如 Spring MVC 中的验证错误

java - 匹配以某个路径元素开头的任何 url

java - 带有额外信息的 Bean 验证