오늘 한 일
프로젝트
- 오전에 화면설계 최종 점검함
- 오후 : 화면설계 (메뉴구조도, 메인화면, 로그인, 회원가입) ppt 리뷰 진행
- 리뷰 내용 반영해 메뉴구조도 수정
- 내일 나머지 화면 수정 + 나의강의실 화면 리뷰 예정
게시판 프로젝트
- 답글 등록 시 기존 게시물 처리상태 변경하는 기능 구현
- 답글 삭제 시 기존 게시물 처리상태 변경하는 기능 구현
1. 답글 등록 시 기존 게시물 처리상태 변경
- controller의 insert, delete 안 처리상태 변경하는 로직 추가
- service, serviceImpl에 처리상태 변경 메소드 추가
- mapper.xml에 업데이트 쿼리 추가
- jsp에 필요한 정보 있는지 점검
controller 동작 순서
- 답글 등록 시 기존 게시물 id 가져오기
- 새로운 vo 객체 만들어서 기존 게시물 id를 답글대상 id에 저장, 처리상태 저장
- 새로운 vo 객체로 상태 update 쿼리 실행
- 목록화면에서 기존 게시물 상태 변경 확인
에러: 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);
prevVO.setProcessingState(1);
egovQnAService.updateQnAProcessingState(prevVO);
}
- mapper의 sql 쿼리에 데이터 이름을 잘못 적어서 일어난 오류였다. 기존 qna의 id를 가져와서 새로운 게시물의 답글대상id (
QT_ID
)에 넣어주고, update 시 조회 기준은 게시물id (QNA_ID
)로 했어야 했는데 자꾸QT_ID
을 조회하고 있었다.
<update id="updateQnAProcessingState">
UPDATE QNAINFO
SET PROCESSING_STATE =
WHERE QNA_ID =
</update>
- 근데 적다보니 QNA_ID에 저장하고 그걸로 가져오는게 아니라 QT_ID에 저장하고 QT_ID로 가져오는게 맞는 것 같다...! 내일 수정해야될듯ㅋㅋ
2. 답글 삭제 시 기존 게시물 처리상태 변경
- 삭제 시 controller에서 qtId null인것 확인
- 삭제 호출하는 detail.jsp에서 값을 안 넘겨준 것 같은 예감이 들어서 확인해보니 역시 안넘겨준거였다.
- input hidden으로 추가해주니 정상작동함
<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}'/>"/>