Я хочу написать действие DELETE, которое возвращает тело без содержимого, если ошибки id не существует. Если идентификатор не существует, я хочу перенаправить его в GET-представление.
Код контроллера:
@RequestMapping(value = "/todo/delete/{id}", method = RequestMethod.GET)
public String getDeleteTodo(Model model, @PathVariable("id") String id)
{
Optional<Todo> todo = todoRepository.findById(Long.decode(id));
if (todo.isEmpty()) {
model.addAttribute("msginfo", "ctl-todo.delete.msginfo.id-not-exist");
model.addAttribute("requestedId", id);
}
else {
model.addAttribute("todo", todo.get());
}
return "v-todo-delete";
}
@RequestMapping(value = "/todo/delete/{id}", method = RequestMethod.DELETE)
public String deleteTodo(@PathVariable String id, RedirectAttributes redirAttrs)
{
boolean exists = todoRepository.existsById(Long.decode(id));
if (exists) {
todoRepository.deleteById(Long.decode(id));
return ""; //here I want to return a no-content body response
}
else {
redirAttrs.addFlashAttribute("msginfo", "ctl-todo.delete.msginfo.id-not-exist");
redirAttrs.addFlashAttribute("requestedId", id);
return "redirect:/todo/delete" + id;
}
}
Дополнительные сведения о представлении:
Представление GET является представлением juste, которое отображает сущность todo, соответствующую идентификатору. Удаление производится кнопкой с помощью ajax для вызова метода DELETE. Затем ответ возвращается как 204 без содержимого в теле, я перенаправляю пользователя с javascript на главную страницу ... Если идентификатор не существует в методе DELETE, я хочу перенаправить в метод GET, чтобы показать ошибку сообщение.
Если у кого-то есть идея сделать это. Заранее спасибо.