@3/13/2023
PRG 패턴으로 댓글 등록 기능 구현
•
post 후 view 페이지로 포워딩하는 게 아니라 리다이렉트를 함으로써 기존 form 데이터가 새로고침을 통해 재전송 되는 것을 방지()
•
댓글 등록 url - 댓글은 게시글에 종속되니까 아래처럼 함
◦
/posts/11/comments/add
•
댓글 등록 form
<!-- 댓글 등록 -->
<form th:action="@{/posts/{postId}/comments/add(postId = ${post.id})}" method="post">
<textarea class="form-control w-100 mt-3" style="resize: none;" id="content" name="content" rows="3"
placeholder="댓글을 입력해주세요"></textarea>
<div class="d-flex">
<input class="btn btn-sm btn-primary ms-auto my-3 fw-bold" type="submit" value="댓글 등록"/>
</div>
<input type="hidden" id="userId" name="userId" th:value="${post.user.id}"/>
<input type="hidden" id="postId" name="postId" th:value="${post.id}"/>
</form>
HTML
복사
히든 필드로 commentForm에 유저와 게시글 아이디 전달함
•
Controller
@PostMapping("/posts/{postId}/comments/add")
public String addComment(
@PathVariable Long postId,
@ModelAttribute CommentForm commentForm
) {
commentService.comment(commentForm);
return "redirect:/posts/" + postId;
}
Java
복사
textarea 공백문제
•
textarea에 정체불명의 공백이 있음
•
찾아본 결과 열고 닫는 태그 안에 줄바꿈까지 모두 없애야 함. 탭까지 들어가서 그런 거였음. 아래처럼 바꾸니 해결됨
<textarea class="form-control w-100 mt-3" style="resize: none;" id="content" name="content" rows="3"
placeholder="댓글을 입력해주세요"></textarea>
Java
복사