이번 과정은 여러 게시글 리스트에서 게시글 하나를 클릭했을 때 보여질,
각각의 게시글 상세 페이지를 구현하는 과정이다
전체적인 흐름은 다음과 같다
- 요청경로를 boardview.html 뷰로 맵핑하고 Model 객체에 데이터를 담아 보낼 메서드, boardView()를 Controller에 추가한다
- DB에서 해당 데이터를 가져와서 반환하는 메서드, boardView()을 Service에 추가한다.
- 게시글 상세 페이지 뷰, boardview.html를 만든다.
//boardController.java
...
@GetMapping("/board/view")
public String boardView(Model model, Integer id){
model.addAttribute("board", boardService.boardView(id));
return "boardview";
}
Controller가 Service에서 받아온 value를 Model에 담아 "board"라는 이름으로 뷰(boardview.html)로 전달한다.
//boardService.java
...
public Board boardView(Integer id) {
return boardRepository.findById(id).get();
}
findById()는 반환형이 Optional이므로 이를 다시 get()을 이용하여 value를 반환한다
Optional이란?
//boardview.html
<!DOCTYPE html>
<html lang="en" xmlns:th="http://thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>게시글 상세 페이지</title>
</head>
<body>
<h1 th:text="${board.title}">제목입니다</h1>
<p th:text="${board.content}">내용이 들어갈 부분입니다</p>
</body>
</html>
thymeleaf를 이용해 Model에 담겨있는 데이터를 꺼내서 뷰에 뿌려준다.
그 결과는 아래와 같다.
[출처] 위 내용은 한코딩님의 강의를 보고 정리한 내용입니다