0804 개발일지

Yesol Lee·2022년 8월 4일
0

개발일지 - 2022

목록 보기
109/187

오늘 한 일

프로젝트

  • 오전에 화면설계 최종 점검함
  • 오후 : 화면설계 (메뉴구조도, 메인화면, 로그인, 회원가입) ppt 리뷰 진행
  • 리뷰 내용 반영해 메뉴구조도 수정
  • 내일 나머지 화면 수정 + 나의강의실 화면 리뷰 예정

게시판 프로젝트

  1. 답글 등록 시 기존 게시물 처리상태 변경하는 기능 구현
  2. 답글 삭제 시 기존 게시물 처리상태 변경하는 기능 구현

1. 답글 등록 시 기존 게시물 처리상태 변경

  • controller의 insert, delete 안 처리상태 변경하는 로직 추가
  • service, serviceImpl에 처리상태 변경 메소드 추가
  • mapper.xml에 업데이트 쿼리 추가
  • jsp에 필요한 정보 있는지 점검

controller 동작 순서

  1. 답글 등록 시 기존 게시물 id 가져오기
  2. 새로운 vo 객체 만들어서 기존 게시물 id를 답글대상 id에 저장, 처리상태 저장
  3. 새로운 vo 객체로 상태 update 쿼리 실행
  4. 목록화면에서 기존 게시물 상태 변경 확인

에러: update 쿼리까지 실행되는데 qna_id가 null로 전달되는 문제

  • 분명 controller까지 기존 게시물 id값이 잘 전달되는데 DB에는 안 들어감
egovQnAService.insertQnA(setUser(qnaVO));

// 원 질문 진행상태 변경
String prevId = qnaVO.getQtId();

if (prevId != null && !prevId.equals("")) {        	
	QnAVO prevVO = new QnAVO();
    prevVO.setQnaId(prevId); // 기존 질문 id를 답글대상id에 저장
    prevVO.setProcessingState(1); // 처리상태 저장
    
    // 서비스 DB업데이트 호출
  	egovQnAService.updateQnAProcessingState(prevVO);
}
  • mapper의 sql 쿼리에 데이터 이름을 잘못 적어서 일어난 오류였다. 기존 qna의 id를 가져와서 새로운 게시물의 답글대상id (QT_ID)에 넣어주고, update 시 조회 기준은 게시물id (QNA_ID)로 했어야 했는데 자꾸QT_ID을 조회하고 있었다.
<update id="updateQnAProcessingState">
		UPDATE	QNAINFO	
		SET PROCESSING_STATE = #{processingState}
 		WHERE  QNA_ID = #{qnaId}
</update>
  • 근데 적다보니 QNA_ID에 저장하고 그걸로 가져오는게 아니라 QT_ID에 저장하고 QT_ID로 가져오는게 맞는 것 같다...! 내일 수정해야될듯ㅋㅋ

2. 답글 삭제 시 기존 게시물 처리상태 변경

  • 삭제 시 controller에서 qtId null인것 확인
  • 삭제 호출하는 detail.jsp에서 값을 안 넘겨준 것 같은 예감이 들어서 확인해보니 역시 안넘겨준거였다.
  • input hidden으로 추가해주니 정상작동함
<!-- detail.jsp : 답글일 경우 필요한 데이터 -->
<input name="qtId" type="hidden" value="<c:out value='${result.qtId}'/>"/>
<input name="isAnswer" type="hidden" value="<c:out value='${result.isAnswer}'/>"/>
<input name="processingState" type="hidden" value="<c:out value='${result.processingState}'/>"/>
profile
문서화를 좋아하는 개발자

0개의 댓글