inblog logo
|
codingb
    Spring

    v1 - 게시글 상세보기

    coding S's avatar
    coding S
    Mar 14, 2024
    v1 - 게시글 상세보기

    1. 화면 확인

    notion image
    💡
    id는 눈에 보이지 않아도 꼭 들고 가야한다
     

    2. BoardNativeRepository findById 추가

    public Board findById(int id) { Query query = em.createNativeQuery("select * from board_tb where id = ?", Board.class); query.setParameter(1, id); return (Board) query.getSingleResult(); }
     

    3. 테스트 해보기

    @Test public void findById_test(){ // given int id = 1; // when Board board = boardNativeRepository.findById(id); //System.out.println("findById_test "+board); // then assertThat(board.getTitle()).isEqualTo("제목1"); assertThat(board.getContent()).isEqualTo("내용1"); }
    notion image
    import static을 해놓으면 앞에 Assert타입 이거 안 적어도 됨!
     

    BoardController

    @GetMapping("/board/{id}") public String detail(@PathVariable Integer id, HttpServletRequest request) { Board board = boardNativeRepository.findById(id); request.setAttribute("board", board); return "board/detail"; }
     

    detail.mustache

    <!-- 수정삭제버튼 --> <div class="d-flex justify-content-end"> <!-- 수정버튼은 수정이 실제로 되는게 아니라 수정 폼으로 이동하는 거니까 a태그 --> <a href="/board/{{board.id}}/update-form" class="btn btn-warning me-1">수정</a> <form action="/board/{{board.id}}/delete" method="post"> <button class="btn btn-danger">삭제</button> </form> </div> <div class="d-flex justify-content-end"> <b>작성자</b> : {{board.username}} </div> <!-- 게시글내용 --> <div> <h2><b>{{board.title}}</b></h2> <hr /> <div class="m-4 p-2"> {{board.content}} </div> </div>
    💡
    삭제는 무조건 post! get으로 하면 게시글을 삭제하면 클릭이 되어버리는 .. 공격을? 받을 수가? 있어요 ? 그래서 삭제 버튼은 from으로 감싸준다!
     

    화면 확인

    notion image

    [ 에러 ]

    notion image

    이거 해줘라! name = id !

    @GetMapping("/board/{id}") public String detail(@PathVariable (name = "id") int id, HttpServletRequest request) { Board board = boardNativeRepository.findById(id); request.setAttribute("board", board); return "board/detail"; }
    💡
    이거를 안 적어주니까 못 찾아서 터짐. 명시적으로 적어주자!
    Share article

    codingb

    RSS·Powered by Inblog