GetMapping изменяет путь
Web приложение на Spring-Boot На странице имеется ссылка
<a th:href="@{/people/{id}(id=${person.getId()})}">Edit</a>
Контроллер, который обрабатывает этот запрос:
@GetMapping(value = "/people/{id}")
public String showPeopleEdit(Model model, @PathVariable("id") long id) {
People people = peopleService.get(id);
model.addAttribute("people", people);
return "people-edit";
}
Вот people-edit:
<form id="02" th:method="POST" th:action="@{/people/edit/{id}(id=${people.getId()})}" th:object="${people}">
<div class="form-group mt-1">
<label for="inp">Номер</label>
<input type="number" class="form-control" id="inp" placeholder="Введите имя" th:field="*{name}" autofocus required>
</div>
<button type="submit" class="btn btn-primary">Сохранить</button>
</form>
Страница people-edit открывается, но браузер не находит там css-файлы, т.к. он ищет их почему-то относительно пути:
/people/css/namefile.css
Конечно их там нет. Что я делаю не так? И еще вопрос: если мне нужно будет обработать несколько контроллеров с этой страницы и я напишу, например так:
@GetMapping(value = "/people/add/{id}")
то он ваще начинает css искать в /people/add
И почему тогда у меня есть ссылка на предыдущей странице:
<a href="/show-people" class="list-group-item list-group-item-action">Show</a>
Контроллер к нему:
@GetMapping(value = "/show-people")
public String showAllPeople() {
return "show-people";
}
И там все нормально отрабатывает, находит все css-файлы
Вот код из шаблона загрузки стилей:
<link rel="stylesheet" type="text/css" href="css/general.css">
Можно конечно прописывать полный путь к стилям, но я просто не понимаю почему пока у меня было два точно таких же контроллера, то все прекрасно работало. А как только добавил третий (который я пришел выше), то вылезла эта хрень со сменой директории.
Т.е. проблема появляется после того как в GetMapping появляется второй слеш: /people/ После этого браузер начинает все искать относительно пути /people А предыдущие все контроллеры работали относительно основного пути /people или /show-people и т.д.