스프링 부트/[스프링 부트] 게시판 무작정 따라하기

[스프링 부트] 게시판 무작정 따라하기 - 5. 게시글 수정

sungw00 2023. 3. 13. 13:58
728x90

게시글 수정

boardmodify.html

<!DOCTYPE html>
<html lang="en" xmlns:th="http://thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>게시물 작성폼</title>
</head>

<style>
    .layout {
        width: 500px;
        margin: 0 auto;
        margin-top: 40px;
    }

    .layout input {
        width: 100%;
        box-sizing: border-box;
    }

    .layout textarea {
        width: 100%;
        margin-top: 10px;
        min-height: 300px;
    }
</style>

<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>
</html>

BoardController 내용 추가

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

    @PostMapping("/board/update/{id}")
    public String boardUpdate(@PathVariable("id") Integer id, Board board) { // board: 새로 입력한 내용

        Board boardTemp = boardService.boardView(id); // 기존의 내용을 가져옴

        // 새로 입력한 내용을 기존의 내용에 덮어씌움
        boardTemp.setTitle(board.getTitle());
        boardTemp.setContent(board.getContent());

        boardService.write(boardTemp); // 글 수정 완료

        return "redirect:/board/list";
    }

 

@PathVariable: @GetMapping줄에 있는 id가 @PathVariable의 id로 인식이 되어 Integer 형태의 id로 들어옴

수정 버튼을 클릭하면 @PathVariable은 아래와 같이 /와 숫자로 전달이 된다.

URL에 파라미터를 넘길 때 2가지 방식이 있는데, "view?id=" 형식으로 넘어가는 것은 쿼리 스트링이라고 하고, 위와 같이 넘어가는 것을 PathVariable이라고 한다.

 

수정할 때의 로직

  1. 기존의 객체를 불러오고
  2. 새로 작성한 내용을 덮어씌운 후
  3. 글을 저장

 

결과: 안녕 8의 내용 수정하기

 

728x90