Skip to content

추가 기능 8) 질문 및 답변 댓글 기능#17

Merged
CheorHyeon merged 10 commits intomainfrom
enhancement16
Aug 8, 2023
Merged

추가 기능 8) 질문 및 답변 댓글 기능#17
CheorHyeon merged 10 commits intomainfrom
enhancement16

Conversation

@CheorHyeon
Copy link
Owner

@CheorHyeon CheorHyeon commented Aug 8, 2023

점프투스프링부트 3-15 추가기능

여덟 번째로 질문 및 답변에 댓글 기능을 구현하였습니다.

  • Ajax로 댓글 보기 누르면 댓글 창 및 작성창이 나타납니다.

  • CRUD 모두 Ajax화 하였습니다.

  • 비밀 댓글 : 관리자 및 댓글 작성자 + 질문 작성자 + (답변 댓글에 한해)답변 작성자
    열람 가능

  • 댓글의 댓글인 대댓글 작성 가능

  • 관리자 : 모든 댓글 수정 및 삭제 가능

  • src/main/java/com/ll/spring_additional/boundedContext/comment/controller/CommentController.java

    • showComments

      • 댓글을 보여주는 메서드로, 질문 또는 답변 각각의 댓글창을 보여줍니다.
    • create

      • 댓글을 생성하는 메서드로, 생성 이후 페이지를 갱신한 결과를 보여줍니다.
      • CommetService의 lastPage 메서드를 통해 마지막 페이지 번호를 구합니다.
    • replyCreate

      • 대댓글을 생성합니다.
      • 부모 댓글이 몇번째 페이지인지 파악하기 위해 CommetService의 getPageNumber 메서드를 사용합니다.
  • src/main/java/com/ll/spring_additional/boundedContext/comment/service/CommentService.java

    • delete

      • Comment가 질문 또는 답변의 list의 형태로 들어가 있으며, fetch 방식이 lazy 방식이기에, find 등으로 새로 요청이 들어가야 갱신이 됩니다.
      • 하지만 Ajax의 경우 재 요청을 보내지 않기에, 리스트에서 명시적으로 제거해주는 방식으로 구현하였습니다.
      • 대댓글이 있을 경우 댓글 객체를 삭제하지 않고 삭제 상태로만 변경합니다.
      • 만일 부모 댓글이 삭제 상태라면, 대댓글 삭제 시 부모 댓글도 같이 삭제합니다!
      • 삭제와 관련해서 추가 설명은 블로그에 남겨두었습니다!
        블로그
    • getPageNumber00

      • indexOf 메서드를 통해 리스트에서 몇번째 있는지 검사합니다.
      • 페이지 단위로 나눠 몇번째 페이지에 위치한 댓글인지 계산하여 반환합니다.
      • 대댓글 삭제, 또는 대댓글 없는 댓글 삭제 시 원래 있던 댓글 페이지를 보여주기 위함입니다!
  • src/main/resources/templates/question/question_detail.html

    • th:data-a-comment-index="${answer.id}" onclick="showAnswerComment(this.getAttribute('data-a-comment-index'));"
    • 자바스크립트 메서드에 변하는 값을 넘겨주기 위한 타임리프 문법입니다.
    • th:text="|${#lists.size(answer.comments)}|"
      • 각 답변별 리스트의 사이즈를 나타내기 위한 타임리프 문법입니다.
    • th:id="'a-comment-count-' + ${answer.id}"
      • 각 답변별 댓글의 개수 갱신 시 id 지정자를 다르게 하기 위한 타임리프 문법입니다.
    • th:id="'a-comment-list-' + ${answer.id}" style="display: none;"
      • 각 답변별 댓글 보기 눌렀을 때 보여지게 하기 위해 id를 다르게 하기 위한 타임리프 문법입니다.

Close #16

@CheorHyeon CheorHyeon added the enhancement New feature or request label Aug 8, 2023
@CheorHyeon CheorHyeon self-assigned this Aug 8, 2023
@CheorHyeon CheorHyeon merged commit 0a81469 into main Aug 8, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

추가 기능 8) 댓글

1 participant