본문 바로가기

Project/Semi-Project

[QT Market] 게시판 기능 구현 중 글 수정 NULL 이슈 해결 과정

 

 

00. 문제 상황

게시글 수정은 되는데, 수정하기 버튼을 클릭하면, TITLE, CONTENT에 해당하는 부분이 NULL이 되면서 빈껍데기만 출력되는 상황

 

콘솔에서도 확인해 볼 수 있다. 수정이 되긴 되는데, 값이 안 보임

 

 

 

01. 문제 해결

 

1) 데이터 베이스에 BOARD TABLE  만들 때 사용한 컬럼들에 걸린 제약조건을 확인해 봤다. 왜냐하면 맨 처음 콘솔에서 확인한 오라클 에러 코드는 ORA-01407: 로 특정 값에 cannot update () to NULL 이 나왔기 때문이다. (맨 처음에는 no, 그리고 title에 NULL로 업데이트 할 수 없다고 했음)

 

그래서 확인해보니, 쓸 데 없이 NOT NULL 조건으로 설계되어 있는 컬럼들을 모두 컬럼 제약조건을 변경했다.

SELECT * FROM ALL_CONSTRAINTS WHERE TABLE_NAME = 'BOARD';

ALTER TABLE BOARD MODIFY USER_ID NULL;
ALTER TABLE BOARD MODIFY BOARD_TITLE NULL;
ALTER TABLE BOARD MODIFY BOARD_CONTENT NULL;
ALTER TABLE BOARD MODIFY BOARD_NO NULL;

ROLLBACK;

 

 

2) 그랬더니, 글 수정을 하니까 제목 날아가고, 내용도 날아감... NULL로 설정해서 그런 줄 알았는데, 맨 처음 콘솔에서 알려주는 에러 메시지에 no가 자꾸 걸림

 

※문제 발견?????

 

글 수정에 UI에는 내가 글 번호를 설계를 하지 않았다. 그래서 no 값을 가지고 지금 UPDATE 하고 있는데 가져올 no 값이 안보이는 .jsp 페이지에서 하고 있으니까 안되는거 아닐까? 하는 생각이 들었다.

 

UI 설계 고쳐서 글 번호 표기해주는 영역 생성하고,

.jsp 파일도 수정해보기로 했다.

 

boardedit.jsp

boardwrite.jsp

 

의 <form> 태그 안에 작성

<input type="hidden" name="no" value="${ board.no }">

 

이 방법도 아니였다.

 

3) 그렇다고 dao나 service가 작동 안하냐? 그것도 아니야. 왜냐면 CRUD 할 때마다 콘솔에도 잘 찍히고, 데이터베이스에도 반영이 되기 때문!

 

 

그러면 이거는 VIEW에서의 문제라고 밖에 표현이 안되는게 아닐까?

 

 

역시....추리는 잘 했는데... 문제 진짜 찾으니까 황당하네

 

※문제 찾음!!!

 

제목이랑 내용에 해당하는 태그들에 name 속성이 빠져있었다.....

<input type="text" name="title" value="${ board.title }">

<textarea name="content">

 

name 속성 주고나니까 잘 된다.... 매번 큰게 아니고 이런걸 놓치지 않도록 신중하게 코드 작성해야겠다!! 다시는 실수안해!