0

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 メソッドにリダイレクトしてエラー メッセージを表示します。

誰かがこれを行うアイデアを持っている場合。前もって感謝します。

4

2 に答える 2