Я столкнулся с этой проблемой, и я сделал следующее:
Вы можете выполнять только шаги 6-9, но я не знать, как вернуться в это состояние.
Вы можете установить как URL сопоставления для одной и той же функции, так и идентификатор настройки как необязательные.
@RequestMapping(method=RequestMethod.GET, value={"/campaigns","/campaigns/{id}"})
public String getCampaignDetails(Model model,
@RequestParam(value="id", required=false) Long id,
@PathVariable("id") Long id2)
{
}
, хотя он также будет отображаться, когда идентификатор не отправляется, но вы можете управлять этим внутри метода.
РЕДАКТИРОВАТЬ : предыдущее решение не работает, потому что @PathVariable
не имеет значения null
, когда нет {null}
и он не может сопоставить URL-адрес (спасибо ngeek). Тогда я думаю, что единственное возможное решение - создать два метода, каждый из которых сопоставлен с его @MappingRequest
, а внутри одного из них вызвать другую функцию или перенаправить на другой URL-адрес (перенаправление: или вперед: префиксы Spring) . Я знаю, что это решение не то, что вы ищете, но думаю, что это лучшее, что вы можете сделать. На самом деле вы не дублируете код, а создаете другую функцию для обработки другого URL-адреса.