Spring RequestMapping冲突

时间:2015-07-09 07:47:53

标签: java spring request

我有一个显示网格的RequestMapping,另一个用于在网格中加载对象。

@RequestMapping(value = "/grid/{objType}", method = RequestMethod.GET)
public String displayGrid(Model model, @PathVariable("objType") String objType) {
    // some code here
}

@RequestMapping(value = "/loadGrid", method = RequestMethod.GET)
public @ResponseBody String loadGrid(Model model) {
     // returns a JSON
}

当我显示网格时,网址就像../grid/User

问题是在创建网格并生成请求loadGrid之后,请求将映射到/grid/loadGrid,该请求由第一种方法而不是第二种方法解析。

有没有办法在之后没有任何内容请求/grid? 或者以任何方式解决这个冲突?

1 个答案:

答案 0 :(得分:2)

碰撞不是问题; spring首先解决完全匹配。 (见source code of AbstractHandlerMethodMapping

您的问题是您错误地定义了映射。如果您在类级别定义@RequestMapping,则所有方法@RequestMappings都将以定义的值为前缀。

以下是三个端点的映射:/grid/grid/{objType}/grid/loadGrid。请注意,@RequestMapping的{​​{1}}不定义get(),仅定义value,因为它继承了类级注释。

method