考虑以下示例:
@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}'之间添加斜杠,但我想删除它,有什么建议吗?
答案 0 :(得分:5)
当您定义类级映射时,Spring会将方法级别映射视为附加段,而不是字符串连接。因此,您无法使用您正在尝试的方法获取/home-of-{id}
。
尝试删除类级@RequestMapping
,并用完全显式路径替换现有的方法级映射。将@RequestMapping("/home-of-{id}")
放在of()
上。
如果您要支持许多/home/
路径(因此您希望保持类级别定义),只需将/home-of-{id}
移动到单独的控制器即可你可以做到这一点。
答案 1 :(得分:1)
删除类级映射并映射每个方法。映射类和方法时,它们是分层的。
(或创建不同的类。)