게시판 상세보기 하단에 댓글을 작성하는 기능을 구현해본다. 루룰
먼저, 사용자가 댓글을 입력할 수 있는 창을 띄워야 한다 !
freeboarddetail.jsp 하단에 자유게시글 댓글 창을 만들어준다.
<h5 class="mb-0">자유게시글 댓글</h5>
<form id="commentform" action="freeboard-review" method="post">
<input type="hidden" name="freeBoardNo" value="${ freeBoard.freeBoardNo }" />
<table class="table align-items-center">
<tr>
<td style="width: 800px;">
<textarea id="comment_content" name="replyContent" style="width: 105%; resize:none; border-radius:80px" rows="2"></textarea>
</td>
<td style="width: 50px; vertical-align: middle;">
<input type="submit" class ="btn btn-sm btn-primary" id="btninsertreview" value="댓글등록하기" >
</td>
</tr>
</table>
</form>
그 다음 댓글 관련 DTO를 하나 생성해준다.
FreeBoardReviewDto.java
@Data
public class FreeBoardReviewDto {
private int freeBoardReplyNo;
private int freeBoardNo;
private String replyContent;
private Date replyCreateDate;
private Date replyModifiYDate;
private int replyParents;
private int replySequence;
private int replyDepth;
private String replyWriter;
private boolean replyDelete;
}
FreeBoardReviewController.java
@Controller
@RequestMapping(path = { "/freeboard" })
public class FreeBoardReviewController {
@Setter(onMethod_= {@Autowired})
private FreeBoardReviewService freeBoardReviewService;
@PostMapping(path = {"/freeboard-review"}) // 자유게시글 댓글 쓰기
public String wrtieFreeBoardReview(FreeBoardReviewDto freeBoardReview,
@RequestParam (defaultValue="-1") int pageNo) {
if(pageNo < 1) {
return "redirect:freeboardlist";
}
freeBoardReviewService.WriteFreeBoardReview(freeBoardReview);
return String.format("redirect:freeboarddetail?freeBoardNo=%d&pageNo=%d", freeBoardReview.getFreeBoardNo(), pageNo);
}
FreeBoardReviewService.java
void WriteFreeBoardReview(FreeBoardReviewDto freeBoardReview);
FreeBoardReviewServiceImpl.java
public class FreeBoardReviewServiceImpl implements FreeBoardReviewService{
@Setter(onMethod_= {@Autowired})
private FreeBoardReviewMapper freeboardReviewMapper;
@Override // 자유게시판 댓글 작성
public void WriteFreeBoardReview(FreeBoardReviewDto freeBoardReview) {
freeboardReviewMapper.insertFreeBoardReview(freeBoardReview);
freeboardReviewMapper.updateReplyParents(freeBoardReview.getFreeBoardReplyNo(), freeBoardReview.getFreeBoardReplyNo());
}
FreeBoardReviewMapper.java
@Mapper
public interface FreeBoardReviewMapper {
@Insert("insert into FreeBoardReview (freeBoardNo, replyContent, replyParents, replySequence, replyDepth) "
+ "values (#{freeBoardNo}, #{replyContent}, 0, 1, 0)")
// 먼저 insert 하고, select 하게 하는 구문 : 자동증가된 컬럼(freeBoardReplyNo)의 값을 DTO 에 넣기
@Options(useGeneratedKeys = true, keyProperty = "freeBoardReplyNo", keyColumn = "freeBoardReplyNo")
void insertFreeBoardReview(FreeBoardReviewDto freeBoardReview);
실행 결과 입력 창이 잘 보이는 것을 확인할 수 있다.
댓글 작성 후 등록하기 버튼을 누르면,
DB에도 값이 잘 들어오는 것을 확인할 수 있다 !!
** TODO : 댓글 수정일자 데이터를 연결하면 자꾸 오류가 나서 일단 작성일자로 값을 넣어놓았다. 그래서 아직까지는 replyCreateDate와 replyModifyDate의 일자가 동일한 것을 볼 수 있다.
![](https://t1.daumcdn.net/keditor/emoticon/niniz/large/003.gif)
'프로젝트' 카테고리의 다른 글
가전제품 대여 웹사이트 (세숫대여) - 게시판 댓글 수정/삭제 기능 구현 (0) | 2023.09.29 |
---|---|
가전제품 대여 웹사이트 (세숫대여) - 게시판 댓글 조회 기능 구현 (0) | 2023.09.29 |
가전제품 대여 웹사이트 (세숫대여) - 자유게시판 글 수정/삭제 기능 구현 (0) | 2023.09.29 |
가전제품 대여 웹사이트 (세숫대여) - 자유게시판 조회수 증가 기능 구현 (0) | 2023.09.29 |
가전제품 대여 웹사이트 (세숫대여) - 자유게시판 페이징 기능 구현 (0) | 2023.09.28 |