[SpringBoot] 템플릿 설정
2024. 8. 28. 15:13ㆍ자바 웹 개발/스프링부트
템플릿이란?
템플릿은 자바 코드를 삽입할 수 있는 HTML 형식의 파일을 말한다. 템플릿 엔진에는 Thymeleaf, Mustache, Groovy, Freemarker, Velocity 등이 있는데 여기서는 타임리프를 사용한다.
타임리프를 build.gradle 파일을 수정하여 설치한다.
implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
implementation 'nz.net.ultraq.thymeleaf:thymeleaf-layout-dialect'
템플릿 사용하기
src/main/resources 디렉터리에서 templates를 선택하여 html 파일을 만든다.
이제 @ResponseBody가 필요없으니 삭제하고 템플릿 파일 이름을 적어서 리턴한다.
@RequiredArgsConstructor
@Controller
public class QuestionController {
private final QuestionRepository questionRepository;
@GetMapping("/question/list")
public String list(Model model){
List<Question> questionList = this.questionRepository.findAll();
model.addAttribute("questionList", questionList);
return "question_list";
}
}
템플릿에서 Model 사용하기
QuestionRespository로 조회한 데이터를 Model 클래스를 사용하여 템플렛에 전달할 수 있다.
public String list(Model model)
매개변수로 Model로 지정하면 객체가 자동으로 생성된다. @RequiredArgsConstructor은 롬복을 통해 final이 붙은 속성을 포함하는 생성자를 자동으로 만들어주는 역할을 한다. 따라서 questionResposityory 객체가 자동으로 주입된다.
<table>
<thead>
<tr>
<th>제목</th>
<th>작성일시</th>
</tr>
</thead>
<tbody>
<tr th:each="question : ${questionList}">
<td th:text="${question.subject}"></td>
<td th:text="${question.createDate}"></td>
</tr>
</tbody>
</table>
th: 타임리프 속성임을 나타낸다. 이를 통해 자바 코드랑 연관된다.
${} : 모델 객체에 저장된 값을 불러들일 수 있다.
자주 사용하는 타임피르의 속성은 다음과 같다.
if문 : th:if="${question != null}"
반복문 : th:each="question : ${questionList}
반복문 속성
-loop.index:루프의 순서(루파 반복 순서, 0부터 1씩 증가)
-loop.count:루프의 순서(루프의 반복 순서, 1부터 1씩 증가)
-loop.size: 반복 객체의 요소 개수(ex.questionList 요소 개수)
-loop.first: 루프의 첫 번째 순서인 경우 true
-loop.last: 루프의 마지막 순서인 경우 true
-loop.odd: 루프의 홀수번째 순서인 경우 true
-loop.even: 루프의 짝수번째 순서인 경우 true
-loop.current: 현재 대입된 객체(ex.question)
텍스트 속성 : th:text="${question.subject}" or [[${question.subject}]]
'자바 웹 개발 > 스프링부트' 카테고리의 다른 글
[SpringBoot] 서비스 만들기 (0) | 2024.08.31 |
---|---|
[SpringBoot] 루트 URL 사용하기 (0) | 2024.08.31 |
[SpringBoot] 리포지터리 데이터베이스 관리 기본 기능 (0) | 2024.08.27 |
[SpringBoot] 엔티티로 테이블 매핑하기 (0) | 2024.08.27 |
[SpringBoot] JPA로 데이터베이스 사용하기 (0) | 2024.08.27 |