70. 댓글 작성하기
by 볼빵빵오춘기Board
댓글이 작성된 순서 내림차순으로 정렬되서 가져와야하기때문이다.
@OrderBy("id desc")
@JsonIgnoreProperties({"board"})
@OneToMany(mappedBy = "board",fetch = FetchType.EAGER,cascade = CascadeType.REMOVE) // mappedBy 연관관계의 주인이 아니다.
private List<Reply> replys;
board.js
- replySave() 함수를 작성하면 되는데 가져올 때 해당 Board의 원글의 정보도 알아야한다. (몇 번째 원글인지)
- 따라서 detail.jsp 수정하여 해당 번호를 알 수 있도록 하자.
$("#btn-reply-save").on("click",()=>{
this.replySave();
});
detail.jsp
<div class="card">
<form>
<input type="hidden" id="boardId" value="${board.id}">
<div class="card-body">
<textarea id="reply-content" rows="2" class="form-control"></textarea>
</div>
<div class="card-footer">
<button type="button" id="btn-reply-save" class="btn btn-primary">등록</button>
</div>
</form>
</div>
board.js
주의! 따옴표(’) x , 백틱(`) o
백틱을 사용하는 이유는 url 뒷부분의 게시물번호를 동적으로 받기 위해서이다.
replySave: function () {
let data = {
boardId : $("#boardId").val(),
content: $("#reply-content").val(),
};
$.ajax({
type: "POST",
url: `/api/board/${data.boardId}/reply`, // 참고로 여기서 따옴표가 아니라 백틱이다!
data: JSON.stringify(data),
contentType: "application/json; charset=utf-8",
dataType: "json",
}).done(function (resp) {
alert("댓글작성이 완료되었습니다.");
location.href = `/board/${data.boardId}`;
}).fail(function (error) {
alert(JSON.stringify(error));
});
},
BoardApiController
@PostMapping("/api/board/{boardId}/reply")
public ResponseDto<Integer> replaySave(@PathVariable int boardId,@RequestBody Reply reply, @AuthenticationPrincipal PrincipalDetail principal){
boardService.댓글쓰기(principal.getUser(),boardId,reply);
return new ResponseDto<Integer>(HttpStatus.OK.value(),1);
}
BoardService
@Autowired
private ReplyRepository replyRepository;
@Transactional
public void 댓글쓰기(User user, int boardId, Reply requestReply){
Board board= boardRepository.findById(boardId).orElseThrow(()->{
return new IllegalArgumentException("댓글 찾기 실패 : 게시글 id를 찾을 수 없습니다.");
});
requestReply.setUser(user);
requestReply.setBoard(board);
replyRepository.save(requestReply);
}
'강의 따라하기 > blog' 카테고리의 다른 글
72. 댓글 작성시 네이티브 쿼리 사용해보기 (0) | 2024.01.11 |
---|---|
71. 댓글 작성시 Dto 사용해보기 (1) | 2024.01.11 |
69. 댓글 목록 뿌리기 (1) | 2024.01.10 |
68. 댓글 디자인하기 (0) | 2024.01.10 |
67. 카카오 로그인 서비스 구현 완료 (0) | 2024.01.10 |
블로그의 정보
Hello 춘기's world
볼빵빵오춘기