【问题标题】:Handling of pre-slash in @RequestMapping@RequestMapping 中预斜线的处理
【发布时间】:2011-08-08 15:24:44
【问题描述】:

想象一下,我有一个类似这样的 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
    }
}

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

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

谢谢,

idb.

【问题讨论】:

    标签: spring spring-mvc request


    【解决方案1】:

    根据 spring 文档,拥有一个类级别的@RequestMapping 注解意味着所有方法级别的@RequestMappings 都将与类的相关。

    不过,在极少数情况下能够覆盖相对映射可能会很好。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-06-29
        • 2012-02-21
        • 1970-01-01
        • 2017-10-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多