게시글 수정 기능 구현

친친·2022년 10월 22일
0

이번엔 게시글 수정 기능을 구현하는 과정이다.
전체적인 흐름은 다음과 같다.

  • boardview.html에서 수정 링크를 추가한다
  • 수정 링크를 눌렀을 때 수정페이지(boardmodify.html)로 연결되도록 맵핑하는 boardModify()를 Controller에 추가한다
  • 수정 전의 게시글 제목과 내용을 불러오는 뷰(boardmodify.html)를 만든다
  • 기존의 게시판내용에 새로 수정한 내용을 덮어 저장한 후, 수정이 끝나면 게시글 리스트로 돌아가는 boardUpdate()를 Controller에 추가한다


//boardview.html
...
<body>

<h1 th:text="${board.title}">제목입니다</h1>
<p th:text="${board.content}">내용이 들어갈 부분입니다</p>
<a th:href="@{/board/delete(id=${board.id})}">글삭제</a>
<a th:href="@{/board/modify/{id}(id=${board.id})}">수정</a>

</body>

boardview.html 뷰에서 수정 링크를 추가해준다


//boardController.java
...
    @GetMapping("/board/modify/{id}")
    public String boardModify(@PathVariable("id") Integer id,
                              Model model){
        model.addAttribute("board", boardService.boardView(id));
        return "boardmodify";
    }

뷰에서 수정 링크를 누르면 이동하는 url을 boardmodify.html과 맵핑시켜주도록 Controller에서 boardModify()를 추가한다
@PathVariable이란?
@RequestParam과 @PathVariable의 차이


//boardmodify.html
...
<body>
    <div class="layout">
        <form th:action="@{/board/update/{id}(id=${board.id})}" method="post">
            <input name="title" type="text" th:value="${board.title}">
            <textarea name="content" th:text="${board.content}"></textarea>
            <button type="submit">수정</button>
        </form>
    </div>
</body>

기존의 게시글 내용을 불러와 화면에 뿌려준다. 내용수정 후 수정 버튼을 누르면 post 방식으로 해당 데이터를 /board/update/{id}로 전달한다.


//boardController.java
...
    @PostMapping("/board/update/{id}")
    public String boardUpdate(@PathVariable("id") Integer id, Board board){

        Board boardTemp = boardService.boardView(id);//기존 게시글
        boardTemp.setTitle(board.getTitle());// title 변경
        boardTemp.setContent(board.getContent());//content 변경
        boardService.write(boardTemp);//DB에 저장

        return "redirect:/board/list";
    }

기존 게시글을 boardTemp에 담고, set(), get() 메서드를 이용해서 수정한 게시글의 title과 content로 변경한 후에 boardService를 호출해서 DB에 다시 저장한다.




[출처] 위 내용은 한코딩님의 강의를 보고 정리한 내용입니다

https://youtu.be/ODdGp13YatA

profile
웹개발 블로그

0개의 댓글