머스테치 수정

<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에 리플라이 주소 추가해야함

여기가서

Untitled

이거추가

Untitled