您可以为同一功能设置两个映射网址,并将ID设置为可选。
@RequestMapping(method=RequestMethod.GET, value={"/campaigns","/campaigns/{id}"})public String getCampaignDetails(Model model, @RequestParam(value="id", required=false) Long id, @PathVariable("id") Long id2){}尽管在不发送id的情况下它也会映射,但是您可以在方法内部进行控制。
编辑
:以前的解决方案不起作用,因为
@PathVariable没有设置为
null,
{null}并且无法映射URL(感谢ngeek)。我认为那时唯一可能的解决方案是创建两个方法,每个方法都与其映射,@MappingRequest在其中一个内部调用另一个函数或重定向到另一个URL(redirect:或forward:Spring前缀)。我知道此解决方案不是您想要的,但认为这是您可以做到的最好。确实,您不是在复制代码,而是在创建另一个函数来处理另一个URL。



