코딩 자율학습단/학습 일지

[DAY 17] 댓글 목록 View 페이지 구현 및 모델 등록하기

young604 2024. 8. 21. 22:53
728x90

댓글에 관한 CRUD 및 REST API 구현이 끝났다.

이제 해당 기능을 웹페이지 화면에서 사용할 수 있도록 mustache를 이용하여 뷰 페이지를 만들어

기존 게시글 페이지에 삽입해야 한다.

보통의 게시판은 게시글의 상세 페이지에 들어가면 게시글의 내용이 보이고, 하단에 댓글이 보이는 목록과 댓글을 입력하는 영역이 나누어져 있다.

부트스트랩의 카드 요소를 이용하여 댓글 뷰 페이지를 생성하고, 상세 페이지의 푸터 바로 위에 뷰 파일을 삽입한다.

// show.mustache
...

{{>comments/_comments}} <!-- 상세 페이지에 댓글 뷰 파일 삽입 -->
{{>layouts/footer}}

뷰 페이지에서 사용한 변수는 반드시 모델에 등록해야 사용할 수 있다.

모델은 컨트롤러에서 해당 메서드를 호출하여 등록해야한다.

    // 데이터 조회 요청 접수
    @GetMapping("/articles/{id}")
    public String show(@PathVariable Long id, Model model) {
        log.info("id =" + id);
        // 1. id 조회해 데이터 가져오기
        Article articleEntity = articleRepository.findById(id).orElse(null);
        List<CommentDto> commentsDtos = commentService.comments(id);
        // 2. 모델에 데이터 등록하기
        model.addAttribute("article", articleEntity);
        model.addAttribute("commentDtos", commentsDtos); // 댓글 목록 모델
        // 3. 뷰 페이지 반환하기
        return "articles/show";
    }

commentService의 메소드를 호출하기 위해서는 컨트롤러에 서비스 객체를 @Autowired로 주입해야한다.

주입한 후, 메서드를 호출하고 모델을 등록하면 아래와 같이 화면이 출력된다.

728x90