我有一个显示网格的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
?
或者以任何方式解决这个冲突?
答案 0 :(得分:2)
碰撞不是问题; spring首先解决完全匹配。 (见source code of AbstractHandlerMethodMapping
)
您的问题是您错误地定义了映射。如果您在类级别定义@RequestMapping
,则所有方法@RequestMappings
都将以定义的值为前缀。
以下是三个端点的映射:/grid
,/grid/{objType}
和/grid/loadGrid
。请注意,@RequestMapping
的{{1}}不定义get()
,仅定义value
,因为它继承了类级注释。
method