728x90
구현 순서
1. board-detail.html
2. board-edit.html
3. BoardController
4. BoardService
5. BoardServiceProcess
6. BoardMapper
7. board-mapper.xml
8. 게시글 수정 구현 화면
1. board-detail.html
상세페이지에 수정페이지로 이동할 <a> 태그 작성
<a th:href="|/board/edit/page?no=${detail.no}|">수정하기</a>
2. board-edit.html
수정페이지 <form> 태그 작성
<body>
<div>
<h3>상품 수정 페이지</h3>
<p>글번호: <span th:text="${detail.no}"></span>번</p>
<div>
<form th:action="|/board/edit/${detail.no}|" method="post">
<p>
<input type="text" name="title" placeholder="제목">
</p>
<p>
<textarea rows="5" cols="50" name="content" placeholder="내용"></textarea>
</p>
<p>
<input type="hidden" name="_method" value="PUT">
<button type="submit">수정완료</button>
</p>
</form>
</div>
</div>
</body>
- th:text="${detail.no}" : 컨트롤러에서 전달된 detail.no 값을 표시
- th:action="|/board/edit/${detail.no}|" : 폼이 제출될 때 요청이 전송되는 경로를 지정한다. ${detail.no}를 사용하여 동적으로 경로를 생성
- <input type="hidden" name="_method" value="PUT"> : HTTP 메소드를 PUT로 지정하기 위한 숨겨진 입력 필드
일반적으로 HTML의 <form> 요소는 GET 또는 POST 메소드만 지원함
3. BoardController
수정 페이지 이동, 게시글 수정 메서드 작성
//게시글 수정 페이지 이동
@GetMapping("/board/edit/page")
public String boardEditPage(@RequestParam long no, Model model) {
service.boardEditPageMove(no, model);
return "board/board-edit";
}
//게시글 수정
@PutMapping("/board/edit/{no}")
public String boardEdit(@PathVariable long no, BoardDTO dto) {
service.boardEditProcess(no, dto);
return "redirect:/board-list";
}
- 수정페이지로 이동할 때 쿼리스트링 파라미터를 활용하여 no 값을 매개변수로 가져온다.
4. BoardService
BoardService 인터페이스에 메서드 선언
//게시글 수정 페이지 이동
void boardEditPageMove(long no, Model model);
//게시글 수정
void boardEditProcess(long no, BoardDTO dto);
5. BoardServiceProcess
BoardService 인터페이스의 메서드 구현
//게시글 수정 페이지 이동
@Override
public void boardEditPageMove(long no, Model model) {
model.addAttribute("detail", mapper.findByNo(no));
}
//게시글 수정
@Override
public void boardEditProcess(long no, BoardDTO dto) {
mapper.updateByNo(no, dto);
}
6. BoardMapper
XML 파일에 정의된 쿼리를 호출할 updateByNo() 메서드 선언
void updateByNo(@Param("no") long no, @Param("dto") BoardDTO dto);
7. board-mapper.xml
<update id="updateByNo">
update board set title = #{dto.title}, content = #{dto.content}
where no = #{no}
</update>
8. 게시글 수정 구현 화면
728x90
'프로젝트 > 게시판' 카테고리의 다른 글
[SpringBoot] 게시판 10. 페이징 처리 util 클래스 만들기 (0) | 2023.08.13 |
---|---|
[SpringBoot] 게시판 9. 게시글 검색 기능 - 비동기 구현 (0) | 2023.08.10 |
[SpringBoot] 게시판 7. 게시글 삭제 기능 구현 (0) | 2023.08.04 |
[SpringBoot] 게시판 6. 게시글 입력 기능 구현 (0) | 2023.08.03 |
[SpringBoot] 게시판 5. 게시글 상세보기 페이지 구현 (0) | 2023.08.03 |