728x90
반응형
- 댓글 API controller, 메서드 추가
CommentApiController
// 댓글 삭제
@DeleteMapping("/posts/{postId}/comments/{id}")
public Long deleteComment(@PathVariable final Long postId, @PathVariable final Long id) {
return commentService.deleteComment(id);
}
REST API설계 규칙에서 다큐먼트에 해당되는 기능, 특정 게시글 (postid) 에 등록된 모든 댓글 중 PK(id)에 해당되는 댓글을 삭제한다. 삭제 프로세스가 완료되면 삭제된 댓글의 PK (id)를 리턴한다.
-findAllComment() 함수 수정
<button type="button" onclick="deleteComment(${row.id});" class="btns"><span class="icons icon_del">삭제</span></button>
상세페이지의 댓글은 findAllComment() 를 이용해 출력하며, 각 댓글의 삭제 버튼을 클릭했을 때 기능이 작동하도록 클릭 이벤트를 선언해 주어야 한다. view.html의 findAllComment() 에서 commentHtml()에 그리는 삭제 버튼 onclick 이벤트를 추가해준다.
-deleteComment() 함수 수정하기
view.html의 JS부분에 다음 함수를 선언한다
// 댓글 삭제
function deleteComment(id) {
if ( !confirm('선택하신 댓글을 삭제할까요?') ) {
return false;
}
const postId = [[ ${post.id} ]];
$.ajax({
url : `/posts/${postId}/comments/${id}`,
type : 'delete',
dataType : 'json',
async : false,
success : function (response) {
alert('삭제되었습니다.');
findAllComment();
},
error : function (request, status, error) {
console.log(error)
}
})
}
commentApiController의 deleteComment()를 호출해 댓글을 삭제 처리한다. 게시글과 마찬가지로delete_yn칼럼의 상태 값을 변경하는 논리 삭제 방식이며, 삭제가 완료된 후 findAllComment() 로 댓글을 다시 조회한다.
728x90
'JAVA > SpringBoot' 카테고리의 다른 글
게시판 프로젝트 - Ajax(비동기) 페이징 새로고침시 페이지 번호 유지하기 (0) | 2023.11.15 |
---|---|
게시판 프로젝트 - 댓글 페이징 처리 (0) | 2023.11.15 |
게시판 프로젝트 - 댓글 수정 기능 구현 (0) | 2023.11.15 |
게시판 프로젝트 - 댓글 리스트 기능 구현 (0) | 2023.11.07 |
게시판 프로젝트 - REST API 방식으로 댓글 등록 기능 구현 (0) | 2023.11.06 |