[Spring Boot/JPA] 게시판을 통해 MVC, CRUD 연습하기 4 - 수정
본문 바로가기

Web 개발/게시판 만들기

[Spring Boot/JPA] 게시판을 통해 MVC, CRUD 연습하기 4 - 수정

728x90
반응형

Spring Boot + H2 Database + JPA + Thymeleaf 을 활용해
간단한 게시판을 작성해보고자 합니다.

오늘 다룰 내용은 게시판 글 수정 기능입니다.

* 개발환경

Spring Boot : 2.4.3
Java 11
Thymeleaf 
Maven
War
Lombok

 

1. 상세보기 화면에 수정 버튼 추가

게시글 내용 밑에 수정버튼을 추가한다.

이때, 수정버튼은 수정할 수 있는 페이지로 이동하는 것이기 때문에 GET방식을 이용한다.

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<h2 th:text="${boardDto.title}"></h2>
<p th:text="${boardDto.content}"></p>

<!-- 수정 or 삭제 -->
<div>
    <a th:href="@{'/board/edit/' + ${boardDto.id}}">
        <button>수정</button>
    </a>
</div>

<script src="//code.jquery.com/jquery-3.3.1.min.js"></script>
<script>
</script>

</body>
</html>

 

2. 수정 기능 추가

상세보기 화면에서 수정버튼을 클릭하면, 수정화면으로 이동한다.

이때 수정화면의 내용은 상세보기 화면과 동일하므로, 상세보기에서 사용한 서비스를 사용한다.

@GetMapping("/board/edit/{no}")
    public String edit(@PathVariable("no") Long id, Model model){
        BoardDto boardDto = boardService.getPost(id);
        model.addAttribute("boardDto", boardDto);
        return "board/edit";
    }

 

3. 수정 화면 만들기

(등록화면을 수정화면과 같이 사용하는 방법이 있었던 것 같지만, 기억이 나지않아 화면을 새로 생성하였다)

수정화면은 상세보기 화면과 내용은 동일하지만

해당 내용을 form으로 감싸고 있고, 해당 값을 수정할 수 있다는 차이가 있다.

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.w3.org/1999/xhtml">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

<form th:action="@{'/board/edit'}" method="post" th:object="${boardDto}">
    <input type="hidden" name="_method" value="put"/>
    <input type="hidden" name="id" th:value="*{id}"/>
    제목 : <input type="text" name="title" th:value="*{title}"/><br>
<!--    작성자 : <input type="text" name="writer" th:value="*{writer}"/><br>-->
    <textarea name="content" th:text="*{content}"></textarea>
    <input type="submit" value="저장">
</form>

</body>
</html>

 

4. 수정 기능 추가

수정화면에서 값을 수정 후 저장버튼을 클릭하면 동작하는 기능이다.

이때 수정은 등록과 기능이 동일하므로, 동일한 서비스를 이용한다.

수정 후에는 상세보기 화면으로 이동하여 수정사항을 보여준다.

@PostMapping("/board/edit")
    public String edit(BoardDto dto){
        boardService.savePost(dto);
        return "redirect:/board/"+dto.getId();
    }

 

728x90
반응형