Есть у меня пара методов, обрабатывающих запросы через Spring MVC.
Выглядят они так:
@RequestMapping(value = "/update/{id}", method = RequestMethod.GET)
public String update(@PathVariable("id") int id, Model model) {
Meal meal = get(id); //отдельный метод
model.addAttribute("meal", meal);
return "mealForm";
}
@RequestMapping(value = "/update", method = RequestMethod.POST)
public String update(HttpServletRequest request) {
int userId = AuthorizedUser.id();
int id = Integer.parseInt(request.getParameter("id"));
Meal meal = new Meal();
meal.setId(id);
meal.setUser(new User());
meal.setCalories(Integer.parseInt(request.getParameter("calories")));
meal.setDescription(request.getParameter("description"));
meal.setDateTime(LocalDateTime.parse(request.getParameter("dateTime")));
log.info("update {} with id={} for userId={}", meal, id, userId);
assureIdConsistent(meal, id);
service.update(meal, userId);
return "meals";
}
При вызове ссылки
<td><a href="update/${meal.id}">Update</a></td>
обрабатывает метод @RequestMapping(value = "/update/{id}", method = RequestMethod.GET), потом генерирует View с формой изменения параметров, отправляет его по адресу: http://localhost:8081/topjava/update/100007 и по нажатию Save отправляет POST-запрос в метод @RequestMapping(value = "/update", method = RequestMethod.POST). Проблема в том, что ожидается адрес
http://localhost:8081/topjava/update
(который потом будет обработан вторым методом), а получается
http://localhost:8081/topjava/update/update
то есть, добавляется лишний /update с ошибкой 405 (не находит метод).
Как мне побороть эту проблему и убрать лишний /update?
<a href="${pageContext.request.contextPath}/update/${meal.id}">Update</a>
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости