我正在使用春季休息,我有两种方法
@RequestMapping(value="/",method = RequestMethod.POST)
public @ResponseBody
Object test1(HttpServletRequest request) {}
@RequestMapping(value="/",method = RequestMethod.GET)
public @ResponseBody
Object test2(HttpServletRequest request) {}
但它无法检测到这两种方法。是否有必要在春季为每个http方法使用不同的URL。
答案 0 :(得分:3)
Spring可以为同一个url支持GET和POST。我做过很多次了。例如(这是POST和PUT,但它有相同的区别):
@Controller
@RequestMapping(value="player")
public class PlayerController {
@Autowired
private PlayerService playerService;
@RequestMapping(method = RequestMethod.POST)
@ResponseBody
public Player createNewPlayer(@RequestBody Player player) {
return playerService.createNewPlayer(player);
}
@RequestMapping(method = RequestMethod.PUT)
@ResponseBody
public Player updatePlayer(@RequestBody Player player) {
return playerService.updatePlayer(player);
}
}
如果您可以发布您收到的错误消息,也许我们可以帮助您找出问题所在。
答案 1 :(得分:0)
我来晚了,但对于仍然想了解这个概念的人来说可能会有用。在下面的代码中,我们将得到错误: java.lang.IllegalStateException:模糊的映射。无法映射'XXX'方法。
@RequestMapping(value="/",method = RequestMethod.POST)
public @ResponseBody
Object test1(HttpServletRequest request) {}
@RequestMapping(value="/",method = RequestMethod.GET)
public @ResponseBody
Object test2(HttpServletRequest request) {}
发生此错误是因为RequestHandlerMapper仅根据URL模式而不是方法类型委派请求。因此,如果我们具有相同的URL模式,则处理程序映射由于歧义性而无法区分应映射到哪个方法。