Spring Web MVC: используйте одно и то же отображение запроса для параметра запроса и переменной пути

Я столкнулся с этой проблемой, и я сделал следующее:

  1. Run Build Clean
  2. Закройте решение
  3. Удалите любые .suo и .user settings files
  4. Удалить все .ncb-файлы
  5. Открыть снова решение
  6. Выгрузить проект
  7. Обновить проект
  8. Удостоверьтесь, что проект настроен снова на запуск
  9. Отладка!

Вы можете выполнять только шаги 6-9, но я не знать, как вернуться в это состояние.

37
задан Daniel Perník 8 November 2015 в 12:33
поделиться

1 ответ

Вы можете установить как 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-адреса.

50
ответ дан 27 November 2019 в 04:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: