게시판 무작정 따라하기 - 게시글 수정

기록하는 용도·2022년 5월 20일
0
  1. 상세페이지에 수정 버튼을 만든다.
<a th:href="@{/board/modify/{id}(id=${board.id})}">수정</a>
  1. 컨트롤러
    수정을 해줄 매핑을 하나 해줘야함.
@GetMapping("/board/modify/{id}")
    public String boardModify(@PathVariable("id") Integer id){
        return "boardmodify";
    }

pathvariable이란?
역슬래시 뒤부분 {id}가 인식이 돼서 Integer형태의 id가 들어온다는 것

  1. boardmodify라는 html파일을 생성

    여기서 값이 넘어와야하는데 값을 넘겨주기위해서 컨트롤러로

  2. 컨트롤러 수정

@GetMapping("/board/modify/{id}")
    public String boardModify(@PathVariable("id") Integer id, Model model){
        model.addAttribute("board",boardService.boardView(id));
        return "boardmodify";
    }

model.addAttribute("board",boardService.boardView(id));
상세 페이지에 있는 글의 내용이랑 수정할때 넘어가는 내용이 같기때문에
이렇게 넘겨준다.

  1. 다시 수정 html 화면으로 가서
<form action="/board/writepro" method="post">
        <input name="title" type="text" th:value="${board.title}">
        <textarea name="content" th:text="${board.content}"></textarea>
        <button type="submit">작성</button>
        <!--            이 버튼의 역할은 데이터를 전송하는 역할을 한다. type=submit-->
        <!--            이 버튼을 누를시 폼안에 있는 input과 textarea가 board/writedo로 넘어가게된다.-->
    </form>

타임리프로 작성해준다.

6.

데이터넘어온 부분은 잘 넘어온것을 볼 수 있다.

<form th:action="@{/board/update/{id}(id = ${board.id})}" method="post">

데이터를 어디로 넘길지 수정.
타임리프문법으로 바꿔준다.

  1. 그리고 포스트매핑으로 처리해주기위해 컨트롤러
@PostMapping("/board/update/{id}")
    public String boardUpdate(@PathVariable("id") Integer id, Board board) {

        Board boardTemp = boardService.boardView(id);
        boardTemp.setTitle(board.getTitle());
        boardTemp.setContent(board.getContent());

        boardService.write(boardTemp);

        return "redirect:/board/list";
    }

(@PathVariable("id") Integer id, Board board)

넘어오는게 id, 이 id를 Integer인 id에 담아주겠다.
넘어오는 데이터(제목, 내용) Board board로 받아온다.

return은 페이지로 넘어올 수 있도록

return "redirect:/board/list";

Board boardTemp = boardService.boardView(id);
boardTemp.setTitle(board.getTitle());
boardTemp.setContent(board.getContent());
boardService.write(boardTemp);

기존에 있던 글을 검색한다.
Board boardTemp = boardService.boardView(id);
board라는 객체 만들어서 기존에 id값을 찾아서 가져오면

여기에 세팅을 한다.
boardTemp.setTitle(board.getTitle());
수정할때 넘어온 데이터(내용, 제목)을 가져오면

Board board -> 이 새로 입력한 내용을
boardTemp.setTitle(board.getTitle());
boardTemp.setContent(board.getContent());
boardService.write(boardTemp); -> 기존에것에 덮어씌우는것이다.


수정버튼을 누르고 수정시 완료된것을 볼 수 있다.

url에 파라미터를 넣을때 방법 2가지
기존에 쓰던 쿼리 스트링
pathvariable 어노테이션을 통해 값을 받아오기

수정할때 기존에것 가져와서 덮어씌우는것

0개의 댓글