위로 아래

게시글 보기에서 답글을 누른 후, 글을 수정하고 글 저장을 누르면 에러가 발생한다.

 

 

널 포인트 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}">

 

 

오류 없이 제대로 저장이 된 것을 확인할 수 있다.