댓글 및 대댓글 수정 다이어그램.drawio.png

댓글 및 대댓글 수정 다이어그램.drawio

myHomeSelect.jsp

**<조회하는 ajax중>
i**f (memberId == reply.memberId) {
 ...
'<button type="button" class="editButton" onclick="updateReplyToggle(this)" value="' + reply.replyNo + '">수정</button>' +

**<스크립트>
// 수정 버튼 관련
    function updateReplyToggle(button) {
	 
        var replyDiv = $(button).closest('div').parent().parent();

        // 수정 버튼과 삭제 버튼 숨김
        $(replyDiv).find('.buttons').hide();

        // 기존 댓글 가져옴
        var replyContent = $(replyDiv).find('.replyContent').data('original-content');

        var replyNo = $(button).val(); // replyNo를 가져오기

        // 수정 입력란과 기존 댓글 내용 저장 취소버튼 추가
        var editForm = '<div class="editForm" style="margin-top: 10px;">' +
                '<textarea class="editReplyContents" style="width: 100%;">' + replyContent + '</textarea>' +
                '<button class="saveEdit" type="button" data-reply-no="' + replyNo + '" onclick="saveEdit(' + replyNo + ', this)">저장</button>' +
                '<button class="cancelEdit" type="button" onclick="cancelEdit(this)">취소</button>' +
                '</div>';
        // 기존 댓글 내용을 숨기고 수정 입력란을 추가
        $(replyDiv).find('.replyContent').hide(); // 기존 댓글 내용 숨기기
        $(replyDiv).append(editForm); // 수정 입력란 추가
    }

    function saveEdit(replyNo, button) {
        // 수정된 내용 가저오기
        var updateRereplyContents = $(button).siblings('.editReplyContents').val();
        
        console.log('replyNo:', replyNo);
        console.log('updateRereplyContents:', updateRereplyContents);
        
        if (updateRereplyContents) {
            $.ajax({
                url: "/gami/board/reply/modRereply.do",
                type: 'POST',
                data: {
                    replyNo: replyNo,
                    updateRereplyContents: updateRereplyContents
                },
                success: function() {
                    alert('댓글 수정 완료');
                    // 댓글 목록 업데이트
                    replyList();
                },
                error: function(status) {
                    alert('댓글 수정 실패');
                    alert(status);
                }
            });

            // 수정 완료 후 댓글 내용을 바꾸고 입력란 숨기기
            var replyDiv = $(button).closest('div').parent();
            $(replyDiv).find('.replyContent').text(updateRereplyContents).data('original-content', updateRereplyContents).show();
            $(replyDiv).find('.editForm').remove();
            $(replyDiv).find('.buttons').show();
        } else {
            alert('빈 내용으로는 수정할 수 없습니다.');
        }
    }

    function cancelEdit(button) {
        // 수정 입력란을 숨기고 버튼을 보이기
        var replyDiv = $(button).closest('div').parent(); 
        $(replyDiv).find('.editForm').remove();
        $(replyDiv).find('.replyContent').show();
        $(replyDiv).find('.buttons').show();
    }**

ReplyController

// 수정
	@RequestMapping(value="/modRereply.do", method=RequestMethod.POST)
	@ResponseBody
	public void modRereply(@RequestParam("replyNo") int replyNo,
							  @RequestParam("updateRereplyContents") String replyContents) throws Exception {
		
		System.out.println("replyNo 받았냐 ?: " + replyNo); // 글 번호
		System.out.println("replyContents 받았냐 ?: " + replyContents); // 글 내용
		
		replyDomain.setReplyNo(replyNo);
		replyDomain.setReplyContents(replyContents);
		
		replyService.modRereply(replyDomain);
		
	}

ReplyServiceImpl

	@Override
	public void modRereply(ReplyDomain replyDomain) throws Exception {
		replyDAO.modRereply(replyDomain);
	}

ReplyDAOImpl

	@Override
	public void modRereply(ReplyDomain replyDomain) throws DataAccessException {
		sqlSession.delete("mapper.board.modRereply", replyDomain);
	}