Delete methods, Spring
Изучаю Spring 5, пишу CRUD приложение (Spring Boot 2.7 + Spring Data Jpa).При попытке удалить сущность браузер выдает "There was an unexpected error (type=Method Not Allowed, status=405)". Из бд ничего не удаляется. Фильтр скрытых методов включен. GET и POST запросы отрабатывают отлично. DELETE - нет.
spring.mvc.hiddenmethod.filter.enabled=true
Если выключить фильт скрытых методов, то в терминале не будет сообщения "метод POST не поддерживается". При отправке http запроса с методом DELETE в Intellij Idea все работает как надо
Строка с кнопкой удаления:
<form th:method="DELETE" th:action="@{/people/{id}(id=${person.getId()})}">
<input type="submit" value="Удалить"/>
</form>
Контроллер:
@Controller
@RequestMapping("/people")
public class PeopleController {
private final PeopleService peopleService;
@Autowired
public PeopleController(PeopleService peopleService) {
this.peopleService = peopleService;
}
@GetMapping()
public String index(Model model){
model.addAttribute("people", peopleService.index());
return "people/people";
}
@GetMapping("/new")
public String newPerson(Model model){
model.addAttribute("person", new Person());
return "people/new";
}
@GetMapping("/{id}")
public String show(@PathVariable("id") int id, Model model){
model.addAttribute("person", peopleService.findOne(id));
return "people/show";
}
@PostMapping()
public String create(@ModelAttribute Person person){
peopleService.save(person);
return "redirect:/people";
}
@DeleteMapping("/{id}")
public String delete(@PathVariable("id") int id){
peopleService.delete(id);
return "redirect:/people";
}
}
Источник: Stack Overflow на русском