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

时间:2015-01-20 10:19:23

标签: spring-mvc

我正在开发一个webapp,其中一个功能是列出给定路径下的所有文件。我试图将几个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
}

它没有用。当请求网址与/list/folder_a/folder_aa类似时,RequestMappingHandlerMapping抱怨:"Did not find handler method for ..."

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

1 个答案:

答案 0 :(得分:1)

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

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