게시글 수정
by 볼빵빵오춘기게시글 수정 Point
- 상세화면에서 수정 버튼 클릭
- 서버에서 해당 게시글의 정보를 가지고 수정 화면 출력
- 제목, 내용 수정 입력 받아서 서버로 요청
- 수정 처리
board2detail.html
<button onclick="updateReq()">수정</button>
<script th:inline="javascript">
const updateReq = () => {
console.log("수정 요청");
const id = [[${board.id}]];
location.href = "/board2/update/" + id;
}
</script>
Board2Controller
@GetMapping("/update/{id}")
public String updateForm(@PathVariable Long id, Model model){
Board2DTO board2DTO = board2Service.findById(id);
model.addAttribute("boardUpdate",board2DTO);
return "board2update";
}
board2update.html
- 모든 정보를 다 가지고 있어야한다.
- 수정하지 않는 정보라 하지만 hits, id 같은 것들 그래서 type을 hidden으로 처리한다.
- writer는 보여지긴 해야하지만 수정은 하면안되므로 readonly를 붙여준다.
- script를 통해 비밀번호 검증 후 비밀번호가 맞으면 action 으로 넘어간다.
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>update</title>
</head>
<body>
<form action="/board2/update" method="post" name="updateForm">
<input type="hidden" name="id" th:value="${boardUpdate.id}">
writer: <input type="text" name="boardWriter" th:value="${boardUpdate.boardWriter}" readonly> <br>
pass: <input type="text" name="boardPass" id="boardPass"> <br>
title: <input type="text" name="boardTitle" th:value="${boardUpdate.boardTitle}"> <br>
contents: <textarea name="boardContents" cols="30" rows="10" th:text="${boardUpdate.boardContents}"></textarea> <br>
<input type="hidden" name="boardHits" th:value="${boardUpdate.boardHits}">
<input type="button" value="글수정" onclick="boardUpdate()">
</form>
<script th:inline="javascript">
const boardUpdate = () => {
const pass = [[${boardUpdate.boardPass}]];
const inputPass = document.getElementById("boardPass").value;
if (pass == inputPass) {
document.updateForm.submit();
} else {
alert("비밀번호가 일치하지 않습니다!");
}
}
</script>
</body>
Board2Controller
return하고 redirect할 수 있지만 조회수가 올라가기 때문에 “board2detail”로 return했다.
@PostMapping("/update")
public String update(@ModelAttribute Board2DTO board2DTO, Model model){
Board2DTO board =board2Service.update(board2DTO);
model.addAttribute("board",board);
return "board2detail";
// return "redirect:/board2/"+board2DTO.getId();
}
Board2Service
public Board2DTO update(Board2DTO board2DTO) {
Board2Entity board2Entity = Board2Entity.toUpdateEntity(board2DTO);
board2Repository.save(board2Entity);
return findById(board2DTO.getId());
}
Board2Entity
public static Board2Entity toUpdateEntity(Board2DTO board2DTO) {
Board2Entity board2Entity = new Board2Entity();
board2Entity.setId(board2DTO.getId());
board2Entity.setBoardWriter(board2DTO.getBoardWriter());
board2Entity.setBoardPass(board2DTO.getBoardPass());
board2Entity.setBoardTitle(board2DTO.getBoardTitle());
board2Entity.setBoardContents(board2DTO.getBoardContents());
board2Entity.setBoardHits(board2DTO.getBoardHits());
return board2Entity;
}
'강의 따라하기 > member2' 카테고리의 다른 글
게시글 페이징_페이징 요청 (0) | 2023.12.29 |
---|---|
게시글 삭제 (0) | 2023.12.29 |
게시글 조회(상세조회,view page) (0) | 2023.12.29 |
게시글 목록 (1) | 2023.12.29 |
게시글 작성 완료 (0) | 2023.12.29 |
블로그의 정보
Hello 춘기's world
볼빵빵오춘기