处理@RequestMapping中的预斜杠

时间:2011-08-08 15:24:45

标签: spring spring-mvc request

想象一下,我有一个像这样的Spring MVC控制器:

@Controller
@RequestMapping("/base-url")
public class MyController{

    //..snip
    @RequestMapping(method=RequestMethod.GET, value="/edit/{id}")
    public String edit(Model model, HttpServletRequest request, Authentication authentication){
        //..snip
    }
}

我的问题是关于函数级value注释的内部@RequestMapping参数。需要/edit/{id}上的预斜线,还是edit/{id}也能完成这项工作?我想象预斜杠会将请求设置为绝对,无论类级映射如何,但它似乎被忽略了。

一种或另一种被认为是更好的做法吗? 在Spring文档中,他们似乎总是使用预斜杠。这样做有什么实际好处吗?

谢谢,

IDB。

2 个答案:

答案 0 :(得分:4)

根据spring文档,具有类级别@RequestMapping注释意味着所有方法级别@RequestMappings将相对于类的级别。

但是,在某些极少数情况下,能够覆盖相对映射可能会很好。

答案 1 :(得分:0)

我个人更喜欢在@RequestMapping的值中添加pre-slash。在代码级别,您可以看到:如果值不以/开头,那么Spring(DefaultAnnotationHandlerMapping)将添加它。详细解答您可以访问:Use or not leading slash in value for @RequestMapping. Need official docs or point to Spring source?