<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>게시글 상세 페이지</title>
</head>
<body>
<h1>제목 입니다.</h1>
<p>내용이 들어갈 부분입니다.</p>
</body>
</html>
👉 정적 페이지로 고정된 글을 불러오는 일은 매우 쉽지만 실제로는 우리는 우리의 정보에 맞게 화면을 출력해야 하기 때문에 이를 위한 작업 방법을 알아볼 것이다.
public Board boardview(Integer id){
return boardRepository.findById(id).get();
}
서비스 로직에서 해당 상세페이지를 보기 위해서 해당 아이디를 받아올 때 get()을 사용하는 이유는? +
findById( )의 값이 Optional로 감싸져 있기 때문에 Optional 안에 값을 가져오기 위해서 get()을 사용한 것이다. (get()은 매우 위험한 방식으로 null값이 있을 땐 예외를 발생시키기에 추천하지 않습니다!!)
@GetMapping("board/view") //localhost:8080/board/view?id=1
public String boardview(Model model, Integer id){
model.addAttribute("board", boardService.boardview(id));
return "boardview";
}
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>게시글 리스트 페이지</title>
</head>
<style>
.layout {
width: 500px;
margin: 0 auto;
margin-top: 40px;
}
</style>
<body>
<div class="layout">
<table>
<thead>
<tr>
<th>글번호</th>
<th>제목</th>
</tr>
</thead>
<tbody>
<tr th:each = "board:${list}">
<td th:text="${board.id}">1</td>
<td >
<a th:text="${board.title}" th:href="@{/board/view(id=${board.id})}"></a>
</td>
</tr>
</tbody>
</table>
</div>
</body>
</html>
localhost:8080/board/view?id=1
처럼 쿼리로 들어오는 id 값을 리스트 요소마다 접근해서 돌려주기에 맞는 id값을 넣어 돌려줍니다.<!DOCTYPE html>
<html xmlns:th="http://www.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>