使用@RequestMapping注释时获取请求的值(URL)

San*_*Lee 13 java spring spring-mvc

当我将多个值映射到@RequestMapping(如Multiple Spring @RequestMapping注释)时,我可以获得请求的值(URL)吗?

像这样:

@RequestMapping(value={"/center", "/left"}, method=RequestMethod.GET)
public String getCenter(Model model) throws Exception {     
    String requestedValue = getRequestedValue();  // I want this.

    // I want to do something like this with requested value.
    String result; 
    if (requestedValue.equals("center")
        result = "center";
    else if (requestedValue.equals("left")
        result = "left";
    return result;
}
Run Code Online (Sandbox Code Playgroud)

Ral*_*lph 17

您可以将Request(HttpServletRequest)本身作为处理程序方法的参数.因此,您可以检查请求URL以获取"值".

@RequestMapping(value={"/center", "/left"}, method=RequestMethod.GET)
public String getCenter(Model model, HttpServletRequest request) throws Exception {             
   String whatYouCallValue = request.getServletPath(); 
   ....
Run Code Online (Sandbox Code Playgroud)

顺便说一句:当我理解你的时候,你想拥有不同的网址,而不是不同的价值观.


San*_*Lee 6

从Spring 3.1.0开始,您可以使用带有正则表达式的URI模板模式.

@RequestMapping(value={"/{path:[a-z-]+}"}, method=RequestMethod.GET)
public String getCenter(@PathVariable String path) throws Exception {             
    // "path" is what I want
}
Run Code Online (Sandbox Code Playgroud)