Hello

게시글 수정

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

볼빵빵오춘기

활동하기