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

knl*_*nly 5 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";
    }
}
Run Code Online (Sandbox Code Playgroud)

index()完美地映射到'/ home'和'/ home /'; 但当(我想)将它映射到'/ home-of-{id}'时,(id)被映射到'/ home/-of- {id}'.

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

Wil*_*ler 5

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

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

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