댓글창은 게시물 상세페이지에서 작성한다.
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>${board.boardTitle }</title>
</head>
<body>
<header>
<jsp:include page="../home.jsp" />
</header>
<table align="center" border="1" width="500">
<tr>
<td>제목</td>
<td>${board.boardTitle }</td>
</tr>
<tr>
<td>작성자</td>
<td>${board.boardWirter }</td>
</tr>
<tr>
<td>작성일</td>
<td>${board.bCreateDate }</td>
</tr>
<tr>
<td>내용</td>
<td>${board.boardContents } <br> <c:if
test="${board.boardRename ne null}">
<img alt="본문이미지"
src="/resources/buploadFiles/${board.boardRename }">
</c:if>
</td>
</tr>
<tr>
<td colspan="2">
<!--검색/일반의 경우 목록주소 --> <!-- 일반으로 상세 진입시 목록 --> <c:if
test="${empty searchValue }">
<input type="button" value="수정"
onclick="location.href='/board/modifyView.kh?boardNo=${board.boardNo}&page=${pageNow }';">
<button type="button"
onclick="location.href='/board/list.kh?page=${pageNow }';">목록</button>
</c:if> <!-- 검색 으로 상세 진입시 --> <c:if test="${searchValue ne null }">
<input type="button" value="수정"
onclick="location.href='/board/modifyView.kh?boardNo=${board.boardNo}&searchCondition=${searchCondition }&searchValue=${searchValue}&page=${pageNow }';">
<button type="button"
onclick="location.href='/board/search.kh?searchCondition=${searchCondition }&searchValue=${searchValue}&page=${pageNow }';">목록</button>
</c:if> <!-- 목록주소 태그 종료 -->
<button type="button" onclick="remove()">삭제</button>
</td>
</tr>
</table>
<!-- 댓글 목록 -->
<form action="/board/addReply.kh" method="post">
<input type="hidden" name="refBoardNo" value="${board.boardNo }">
<table align="center" width="500" border="1">
<tr>
<td>
<textarea rows="3" cols="55" placeholder="내용을 작성하세요" name="replyContents" required="required"></textarea>
</td>
<td>
<button>등록하기</button>
</td>
</tr>
</table>
<table align="center" width="500" border="1">
<tr>
<td width="100">내용</td>
<td>작성자</td>
<td>작성일</td>
<td><a href="#">수정</a> <a href="#">삭제</a>
</tr>
</table>
</form>
<script>
function remove() {
event.preventDefault(); // 하이퍼링크 이동방지
if (window.confirm("게시물을 삭제하시겠습니까?")) {
location.href = '/board/remove.kh?page=${pageNow}';
}
}
</script>
</body>
</html>
create table reply_tbl(
reply_no number primary key,
ref_board number not null,
reply_contents varchar2(500) not null,
reply_writer varchar2(30) not null,
r_create_date date default sysdate,
r_update_date date default sysdate,
r_status varchar2(2) default 'Y'
);
create sequence seq_reply_no;
private int replyNo;
private int refBoardNo;
private String replyContents;
private String replyWirter;
private Date rCreateDate;
private Date rUpdateDate;
prviate String rStatus;
/**
* 댓글등록
* @param mv
* @return
*/
@RequestMapping(value="/board/addReply.kh", method = RequestMethod.POST)
public ModelAndView addBoardReply(ModelAndView mv, @ModelAttribute Reply reply,
HttpSession session) {
//1
Member member= (Member)session.getAttribute("loginUser");
String replyWriter = member.getMemberId();
reply.setReplyWirter(replyWriter);
int result = bService.registerReply(reply);
try {
int boardNo = reply.getRefBoardNo();
mv.setViewName("redirect:/board/detail.kh?boardNo="+boardNo);
} catch (Exception e) {
mv.addObject("msg",e.getMessage());
}
return mv;
}
글쓴이이다. 글쓴이는 session에 이미 저장된 loginUser에서 가져온다.(//1참고)
Member member= (Member)session.getAttribute("loginUser");
String replyWriter = member.getMemberId();
reply.setReplyWirter(replyWriter);
댓글을 쓴 뒤 다시 돌아가야할 상세페이지는 boardNo를 통해 그 페이지로 돌아가기때문에 reply에서 getRefBoardNo로 가져온 뒤 mv를 통해 페이지에 연결해준다.
int result = bService.registerReply(reply);
저장한값을 해당 코드를 통해 Service클래스로 보냈다.@Override
public int registerReply(Reply reply) {
int result =bStore.insertReply(session, reply);
return result;
}
@Override
public int insertReply(SqlSessionTemplate session, Reply reply) {
int result = session.insert("BoardMapper.insertReply",reply);
return result;
}
<insert id="insertReply">
insert into reply_tbl values(seq_reply_no.nextval, #{refBoardNo},#{replyContents},#{replyWirter}, default, default, default)
</insert>