6. 스프링부트와 타임리프로 게시판 만들기 - 글 삭제

yeom yaloo·2022년 7월 19일
0
post-thumbnail

삭제 기능 구현

서비스 로직 작성

    public void boardDelete(Integer id){
        boardRepository.deleteById(id);
    }
  • JpaRepository를 사용해주면 이미 구현해놓은 delete 기능이 있다.
  • 이를 사용하기 위해서는 id 값을 받아와 넣어주면 삭제해주게 된다.

컨트롤러 작성

@GetMapping("/board/delete")
    public String boardDelete(Integer id){
        boardService.boardDelete(id);
        return "redirect:/board/list";
    }

redirect?
리다이렉트란? 쉽게 말해서 해당 삭제 기능을 구현하고 난 뒤엔 삭제한 상세페이지는 사라지게 되기 때문에 다른 페이지로 가야하고 이때 우리는 게시글 목록을 보여주는 localhost:8080/board/list로 다시 돌아가서 게시물이 작성된 목록들을 보여주게 된다.

@DeleteMapping이 아닌 @GetMapping을 사용한 이유는?
api를 사용한 통신의 경우엔 @DeleteMapping을 통한 삭제가 가능하지만 form 테그나 uri로 직접 접근하는 경우엔 @DeleteMapping 사용이 불가하다. (이때 hidden 타입의 input 테그를 이용하면 쓸 수는 있지만 잘 사용하지 않는다고 한다.)

상세 페이지(삭제 링크 추가)

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>게시글 상세 페이지</title>
</head>
<body>
    <h1 th:text ="${board.title}">제목 입니다.</h1>
    <p th:text ="${board.content}">내용이 들어갈 부분입니다.</p>
    <a th:href="@{/board/delete(id=${board.id})}">글 삭제</a>
</body>
</html>
  • <a th:href="@{/board/delete(id=${board.id})}">글 삭제</a>
    이 경우에는 삭제할 id를 가져와 controller로 넘어가면 이를 서비스 로직에서 삭제한다.
profile
즐겁고 괴로운 개발😎

0개의 댓글