@GetMapping("/question/list")
public String list(Model model) {
List<Question> questionList = this.questionRepository.findAll();
model.addAttribute("questionList", questionList);
return "question_list";
}
th:
: 자바코드와의 연결고리!th:each
: 요소 반복하기, foreach문 같은..<tr th:each="variable : ${list}">
th:each=" 객체 : ${addAttribute로 담은 데이터list}"
th:text
: 태그 안의 텍스트를 서버에서 전달 받은 값에 따라 표현th:text="${변수.속성}"
<tr th:each="question : ${questionList}"> // 가져온 리스트를 반복
<td th:text="${question.subject}"></td> // 텍스트는 question의 subject을 적고
<td th:text="${question.createDate}"></td> // 여긴 question의 reateDate을 적는다.
</tr>
th:if="${question != null}"
th:each="question : ${questionList}"
th:each="question, loop : ${questionList}"
loop 객체 속성
- loop.index - 반복 순서, 0부터 1씩 증가
- loop.count - 반복 순서, 1부터 1씩 증가
- loop.size - 반복 객체의 요소 갯수 (예: questionList의 요소 갯수)
- loop.first - 루프의 첫번째 순서인 경우 true
- loop.last - 루프의 마지막 순서인 경우 true
- loop.odd - 루프의 홀수번째 순서인 경우 true
- loop.even - 루프의 짝수번째 순서인 경우 true
- loop.current - 현재 대입된 객체 (예: 위의 경우 question과 동일)
th:text=값
: 텍스트로 해당 값을 출력th:text="${question.subject}"
cf. th:text
대신 대괄호 사용해서 값 직접 출력도 가능하다.
<td>[[${question.subject}]]</td>
@GetMapping("/")
public String root() {
return "redirect:/question/list";
}
스프링부트는 리다이렉트 또는 포워딩을 할 수 있다.
redirect:<URL>
: URL로 리다이렉트 (리다이렉트는 완전히 새로운 URL로 요청이 된다.)
forward:<URL>
: URL로 포워드 (포워드는 기존 요청 값들이 유지된 상태로 URL이 전환된다.)