뷰에서 처리
로그인한 유저와 글쓴 유저 확인후 삭제 및 수정 버튼을 보여 준다.
<input type="hidden" value="${view.idx}" name="idx" />
<input type="text" value="${view.ref}" name="ref" />
<input type="text" value="${view.reorder}" name="reorder" />
<c:if test="${loginUser.userid ==view.userid }">
<button class="btn btn-danger" type="button" id="btnDelete">삭제</button>
<button class="btn" type="button" id="btnUpdate">수정</button>
</c:if>
자바스크립트 처리로 댓글이 달렸는지 확인 후 삭제 여부를 결정한다.
/* 삭제 */
$("#btnDelete").click(function(){
//댓글이 있는지 확인
var liplySize=$("#LplyUL").find(".thumb-pad").size();
if(liplySize > 0){
alert("댓글이 달린 게시물은 삭제 할 수 없습니다.");
return ;
}
if(confirm("정말 삭제 하시겠습니까?")){
document.form1.action="/board/board_delete.do";
document.form1.submit();
}
});
var replyMsg ="${replyMsg}";
if(replyMsg.length>3){
alert(replyMsg);
}
컨트롤에서
답변이 달린 게시물이 지 확인 후 답변이 달렸으면 redicrectAtrribute 확인 처리 하였다.
//게시물 삭제 처리
@RequestMapping(value="/board_delete.do", method=RequestMethod.POST)
public String board_delete(@RequestParam int idx, @RequestParam Integer ref,
@RequestParam Integer reorder, RedirectAttributes rttr){
//답변이 있는 게시물, 댓글이 있는 게시물에 대한 처리가 필요함
//만약 0이면 답변이 없다
//select count(*) from board where ref=3 and reorder >4;
if(boardService.replyExist(ref, reorder) == 0 ){
//답변이 없다. 게시물 삭제
boardService.boardDelete(idx);
//게시물 목록 이동
return "redirect:listPage";
}else{
rttr.addFlashAttribute("replyMsg", "답변이 달린 게시글은 삭제 할 수 없습니다.");
return "redirect:view.do?idx="+idx;
}
}
dao and servie
@Override
public void boardDelete(int idx) {
sqlSession.delete(namespace+".boardDelete", idx);
}
@Override
public int replyExist(Integer ref, Integer reorder) {
// TODO Auto-generated method stub
Map<String, Object> map =new HashMap<>();
map.put("ref", ref);
map.put("reorder", reorder);
return sqlSession.selectOne(namespace+".replyExist", map);
}
Mappper.xml
SQL 처리
<select id="replyExist" resultType="int">
select count(*) from board where ref=#{ref} and reorder > #{reorder};
</select>
<delete id="boardDelete" >
DELETE FROM board WHERE idx=#{idx}
</delete>
댓글 ( 4)
댓글 남기기