ID エラーが存在しない場合にコンテンツなしの本文を返す 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 ビューは、id に対応する todo エンティティを表示する単なるビューです。削除は、ajaxを使用してDELETEメソッドを呼び出すボタンで行われます。次に、本文にコンテンツがない 204 として応答が返され、javascript を使用してユーザーをメイン ページにリダイレクトします... ID が DELETE メソッドに存在しない場合は、GET メソッドにリダイレクトしてエラー メッセージを表示します。
誰かがこれを行うアイデアを持っている場合。前もって感謝します。