위로
아래
게시글 보기에서 답글을 누른 후, 글을 수정하고 글 저장을 누르면 에러가 발생한다.
널 포인트 Exception.
스트링의 길이를 반환하는 부분에서 스트링이 널이라 오류가 난다고 한다.
다행히도 length()를 쓴 부분이 한정되어 있다.
글 수정을 완료한 후 글 작성을 누르면, 데이터베이스에 새로운 글 내용을 저장하기 위해 BoardWriteAction이 실행된다.
BoardWriteAction 안에는, 답글인지 새글인지 확인하여 답글이라면 bno, bref, bstep, blevel을 원래 값으로 넣어주는 부분이 들어 있다.
if(request.getParameter("bno")!="0" && request.getParameter("bno").length()!=0
|| request.getParameter("bno")!=null && request.getParameter("bno").length()!=0){
dto.setBno(Integer.parseInt(request.getParameter("bno")));
dto.setBref(Integer.parseInt(request.getParameter("bref")));
dto.setBstep(Integer.parseInt(request.getParameter("bstep")));
dto.setBlevel(Integer.parseInt(request.getParameter("blevel")));
}
여기에서 오류가 난 것.
그렇다는 건 bno 값을 불러오지 못하고 있다는 뜻이다.
데이터가 BoardWriteForm에서 날아왔으니 그곳을 확인해본다.
<form name="form1" method="post" action="jb?command=writeAction">
<table>
<tr><td colspan="2"><h3>게시글 쓰기</h3></td></tr>
<tr>
<th>제목${dto.subject}</th>
<c:choose>
<c:when test="${dto == null}">
<td><input type="text" name="subject" class="chk" title="제목"></td>
</c:when>
<c:when test="${dto.bno > 0}">
<td><input type="text" name="subject" class="chk" title="제목" value="[답글] ${dto.subject}"></td>
</c:when>
</c:choose>
</tr>
<tr>
<th>작성자</th>
<td><input type="text" name="writer" class="chk" title="작성자"></td>
</tr>
<tr>
<th>글 내용</th>
<td><textarea name="content" class="chk" title="글내용"></textarea></td>
</tr>
<tr>
<th>비밀번호</th>
<td><input type="password" name="passwd" class="chk" title="비밀번호"></td>
</tr>
<tr>
<td colspan="2">
<input class="btn" type="button" value="글 저장" id="submit11">
<input class="btn" type="button" value="글 목록" onclick="location.href='jb?command=list'">
</td>
</tr>
</table>
</form>
아뿔사, form 태그 안에 bno, bref, bstep, blevel의 정보가 없어서,
submit을 해주어도 데이터가 전송되지 않는다.
맨 밑에 hidden으로 데이터를 넣어서 같이 전송할 수 있도록 한다.
<input type="hidden" name="bno" value="${dto.bno}">
<input type="hidden" name="bref" value="${dto.bref}">
<input type="hidden" name="bstep" value="${dto.bstep}">
<input type="hidden" name="blevel" value="${dto.blevel}">
오류 없이 제대로 저장이 된 것을 확인할 수 있다.