머스테치 수정
<div class="card-body">
<form action="/reply/save" method="post">
<input type="hidden" name="boardId" value="{{board.id}}">
<textarea class="form-control" rows="2" name="comment"></textarea>
<div class="d-flex justify-content-end">
<button type="submit" class="btn btn-outline-primary mt-1">댓글등록</button>
</div>
</form>
</div>
히든 하나 추가 해줫음
dto 생성
package shop.mtcoding.blog.reply;
import lombok.Data;
import shop.mtcoding.blog.board.Board;
import shop.mtcoding.blog.user.User;
public class ReplyRequest {
@Data
public static class SaveDTO {
private Integer boardId;
private String comment;
public Reply toEntity(User sessionUser, Board board) {
return Reply.builder()
.comment(comment)
.board(board)
.user(sessionUser)
.build();
}
}
}
보더에는 보더를 한번 찾고 그 찾은 보더 객체를 넣어야 한다.
리플라이 컨트롤러
package shop.mtcoding.blog.reply;
import jakarta.servlet.http.HttpSession;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PostMapping;
import shop.mtcoding.blog.user.User;
@RequiredArgsConstructor
@Controller
public class ReplyController {
private final ReplyService replyService;
private final HttpSession session;
@PostMapping("/reply/save")
public String save(ReplyRequest.SaveDTO requestDTO) {
User sessionUser = (User) session.getAttribute("sessionUser");
replyService.save(requestDTO, sessionUser);
return "redirect:/board/" + requestDTO.getBoardId();
}
}
리플라이 서비스
package shop.mtcoding.blog.reply;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import shop.mtcoding.blog._core.errors.exception.Exception404;
import shop.mtcoding.blog.board.Board;
import shop.mtcoding.blog.board.BoardJAPRepository;
import shop.mtcoding.blog.user.User;
@RequiredArgsConstructor
@Service
public class ReplyService {
private final BoardJAPRepository boardJAPRepository;
private final ReplyJPARepository replyJPARepository;
// 댓글쓰기
@Transactional
public void save(ReplyRequest.SaveDTO requestDTO, User sessionUser) {
Board board = boardJAPRepository.findById(requestDTO.getBoardId())
.orElseThrow(() -> new Exception404("없는 게시글에 댓글을 작성할 수 없습니다."));
Reply reply = requestDTO.toEntity(sessionUser, board);
replyJPARepository.save(reply);
}
}
리플라이 만들었으니 WebMvcConfig에 리플라이 주소 추가해야함
여기가서

이거추가
