gpt4 book ai didi

java - Spring RequestMapping 冲突

转载 作者:行者123 更新时间:2023-12-02 04:32:16 26 4
gpt4 key购买 nike

我有一个显示网格的 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 的请求,而后面什么都没有吗?或者有什么办法可以解决这个冲突?

最佳答案

碰撞不是问题; spring 首先解析精确匹配。 (参见source code of AbstractHandlerMethodMapping)

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

以下映射三个端点:/grid/grid/{objType}/grid/loadGrid。请注意,get()@RequestMapping 没有定义任何,仅定义其方法,因为它继承自该类-级注释。

@Controller
@RequestMapping(value = "/grid")
public class GridController {
@RequestMapping(method = RequestMethod.GET)
public String get(Model model) {
// ...
}

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

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

关于java - Spring RequestMapping 冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31311207/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com