Search

[스프링 게시판] 댓글 등록 기능

@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
복사

관련 커밋

ae24fc913ace2e6223e84161960d34a7471753d3
commit