2014-09-20 4 views
0

Предположим, что я показываю расписание для академической группы с id = 1 по следующему URL-адресу: http://localhost:8222/schedule?groupId=1.@RequestMapping с параметром в середине пути

На этой странице У меня есть кнопки для удаления определенных уроков из графика. Атрибут Button action в JSP имеет следующее значение: "schedule?${pageContext.request.queryString}/delete/${lessons[count].id}", поэтому нажатие кнопки «Удалить» возле урока с id = 1 вызывает перенаправление на этот URL: http://localhost:8222/schedule?groupId=1/delete/1.

Что я хочу сделать, это создать метод, сопоставленный этому URL-адресу, который выполняет удаление и перенаправление на страницу с расписанием для выбранной в данный момент группы: http://localhost:8222/schedule?groupId=1. Вот что я пытался сделать:

Но это не работает, этот метод никогда не называется. Как написать этот метод правильно для того, чего я пытаюсь достичь?

+5

Нет, URL Безразлично» t имеет смысл. Строка запроса - это то, что приходит в конце, а не посередине. Создайте что-нибудь более спокойное, например '/ schedule/1/lesson/1', и отправьте запрос DELETE, чтобы удалить его. –

ответ

1

После использования groupId вот так ?groupId, groupId становится параметром, а более поздняя часть URL-адреса становится его значением. так что если вы не хотите, чтобы изменить существующие шаблоны URL ваш метод обработки запроса должен быть, как показано ниже:

@RequestMapping(value = "/schedule") 
public String deleteLesson(@RequestParam("groupId") String restOfTheUrl) { 

    log.info(restOfTheUrl); 
    // your code 
} 

После его регистрации вы должны увидеть, например:

1/delete/2 

Теперь вы должны разобрать его за groupId и урок id для удаления.

Но если вы хотите, чтобы справиться с этим в вашем пути, ваш код должен быть как:

@RequestMapping(value = "/schedule/groupId/{groupId}/delete/{lessonId}") // convert you request param to path varriable 
public String deleteLesson(@PathVariable("lessonId") Integer lessonId, @PathVariable("groupId") Integer groupId) { 
    lessonRepository.delete(lessonId); 
    return "redirect:/schedule?groupId=" + groupId; 
} 

Чтобы узнать больше: