您可以为同一功能设置两个映射网址,并将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。