避免Spring RequestMapping之间的斜杠(/)

时间:2012-01-29 01:23:31

标签: spring slash request-mapping

考虑以下示例:

@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 /';但当(我想)将它映射到'/ home-of-{id}'时,(id)被映射到'/ home / -of- {id}'。

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

2 个答案:

答案 0 :(得分:5)

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

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

如果您要支持许多/home/路径(因此您希望保持类级别定义),只需将/home-of-{id}移动到单独的控制器即可你可以做到这一点。

答案 1 :(得分:1)

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

(或创建不同的类。)