5

考虑以下示例:

@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}'之间添加一个斜杠,但我想消除它,有什么建议吗?

4

2 回答 2

6

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

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

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

于 2012-01-29T01:29:25.920 回答
1

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

(或创建不同的类。)

于 2012-01-29T01:30:26.637 回答