1

我正在尝试使用请求映射器来匹配这样的网址:

http://localhost:9999/si/configs/some/path/on/the/server/file.xml

我有一个这样设置的控制器,但是该RequestMapping方法的findConfig值不正确。这是我的代码(去掉所有无关的东西):

@Controller
@RequestMapping("/si/configs")
public class SIController {

    @RequestMapping(value = "{path:/**/*.xml}", method = RequestMethod.GET)
    public ResponseEntity<String> findConfig(@PathVariable("path") String path) {
        // value of path arg should be: "/some/path/on/the/server/file.xml"
   }
}

我知道 Spring 允许在路径匹配字符串中使用正则表达式,并且我尝试遵循这个问题的建议:Spring URI Template Patterns with Regular Expressions,但我似乎无法正确理解。

请求映射中应该包含什么?


编辑

当我删除路径变量并使用以下内容时:

    @RequestMapping(value = "/**/*.xml", method = RequestMethod.GET)
    public ResponseEntity<String> findConfig() {
    }

我的控制器方法按预期调用。因此,尝试将路径变量与 spring 不喜欢的野生 crad 进行匹配是有一些事情的。

4

1 回答 1

1

直接使用 HttpServletRequest 怎么样?

@RequestMapping(value = "/**/*.xml", method = RequestMethod.GET)
public ResponseEntity<String> findConfig(HttpServletRequest request) {
    String path = request.getServletPath()/getRequestURL()/getPathInfo()
    //I forget which one could give the correct part, maybe some parse operation needed

}

于 2013-07-27T10:51:51.167 回答