【问题标题】:Avoid the slash(/) between Spring RequestMapping避免 Spring RequestMapping 之间的斜线(/)
【发布时间】:2012-02-21 10:29:33
【问题描述】:

考虑以下示例:

@Controller
@RequestMapping({"/home"})
public class Home {
    @RequestMapping(value = { "", "/" })
    public String index() {
        return "home";
    }
    @RequestMapping(value = { "-of-{id}" })
    public String of(@PathVariable("id") String id) {
        System.out.println(id);
        return "home";
    }
}

index() 完美映射到 '/home' 和 '/home/';但是当我希望将 of(id) 映射到 '/home-of-{id}' 时,它会映射到 '/home/-of-{id}'。

Spring 自动在 '/home' 和 '-of-{id}' 之间添加一个斜杠,但我想消除它,有什么建议吗?

【问题讨论】:

    标签: spring slash request-mapping


    【解决方案1】:

    移除类级映射并映射每个方法。当您映射一个类和方法时,它们是分层的。

    (或创建不同的类。)

    【讨论】:

      【解决方案2】:

      当您定义一个类级映射时,Spring 将方法级映射视为附加段,而不是字符串连接。因此,您无法使用您尝试的方法获得/home-of-{id}

      尝试摆脱类级@RequestMapping,并用完全显式路径替换现有的方法级映射。将@RequestMapping("/home-of-{id}") 放在of() 上。

      如果您要拥有许多想要支持的 /home/ 路径(因此您希望保留类级别的定义),只需将 /home-of-{id} 移动到单独的控制器即可那个。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-06-29
        • 1970-01-01
        • 2019-02-08
        • 2012-10-14
        • 2014-06-16
        • 1970-01-01
        相关资源
        最近更新 更多