Purple Bobblehead Bunny

Backend/SPRINGBOOT

[SpringBoot] 게시판 만들기 6. 게시글 수정

준영어린이 2022. 10. 31. 19:09

 

게시글 수정을 할 것이다

 

우선 boardmodify.html을 만들자.

 

글 작성과 같기 때문에 boardwrite.html 코드를 복사해서 그대로 만들자!

 

<!DOCTYPE html>
<html lang="en">
<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: 20px;
        min-height: 300px;
    }

    h2 {
        text-align: center;
    }
</style>

<body>
    <form action="/board/writepro" method="post">
    <h2>게시물 작성</h2>
    <div class="layout">
        <input type="text" name="title">
        <textarea name="content"></textarea>
        <button type="submit">수정</button>
    </div>
    </form>
</body>
</html>

 

그리고 항상 그랬듯이 BoardController로 이동하고

처음 보는 어노테이션이 나타났다 !

@PathVariable : 현 코드 기준으로 URI이 들어왔을 때 id부분이 인식이 되어서 Integer 형태의 id로 들어오게 된다.

                           예를 들면, 아래 URI 에서 진한 부분이 @PathVariable로 처리해 줄 수 있다.

                           http://localhost:8080/board/modify/12

                        

이 전 주소와는 다르게 ?id=1 이런식이 아닌 /1 이런 식으로 URI 주소가 나타나니까 보기 훨씬 깔끔하다고 느껴졌다.

 

 

게시물 수정은  write와 같으므로 Service에서는 따로 작성하지 않고, boardView 메서드를 그대로 사용한다!

 

이제 boardmodify.html을 수정을 해 줘야 한다.

 

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.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: 20px;
        min-height: 300px;
    }

    h2 {
        text-align: center;
    }
</style>

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

thymeleaf로 수정을 조금 하였고, textarea는 thymeleaf value가 들어가지지 않아, text를 사용했다.

 

이제 다시 Controller로 이동을 하여 PostMapping 구현을 하자

 

 

html에서 action 값으로 "@{/board/update/{id}(id=${board.id})}"을 주고, method는 post방식 이다.

 

위에서 언급 했듯이, 게시물 작성이랑 내용이 비슷하다.

 수정은 기존의 글을 찾고, 새로 입력한 내용을 기준의 내용에 다시 담아서 저장을 한다.

2번 글 수정

 

DB 값도 수정이 잘 되었다.