본 프로젝트 자료는 김영한님의 스프링 MVC 2편 - 백엔드 웹 개발 활용 기술을 참고 제작됐음을 알립니다.
자바의 연산과 타임리프 연산은 크게 다르지 않다. HTML 에 사용되기에 HTML 엔티티 사용하는 부분만 조심하자.
예제 코드
@GetMapping("/operation")
public String operation(Model model) {
model.addAttribute("nullData", null);
model.addAttribute("data", "Spring!");
return "basic/operation";
}
> (gt), < (lt), >= (ge), <= (le), ! (not), == (eq), != (neq, ne)
타임리프 태그 속성(Attribute)
예제 코드
@GetMapping("/attribute")
public String attribute() {
return "basic/attribute";
}
th:name="userA" 가 name="mock" 를 대체하여 출력 결과는 다음과 같다.
<input type="text" name="userA" />
타임리프에서 반복은 th:each 를 사용한다.
예제 코드
HTML
th:each="user : ${users}"
반복 코드인 th:each 를 사용하여 오른쪽 컬렉션 ${users} 의 값을 하나씩 꺼내서 왼쪽 변수 user 에 담아서 태그를 반복.
th:each 는 List 뿐만 아니라 배열, java.util.Iterable, java.util.Enumeration 을 구현한 모든 객체를 반복에 사용할 수 있다.
Map 도 사용할 수 있는데 이 경우 변수에 담기는 값은 Map.Entry 다.
출력 결과
th:each="user, userStat : ${users}
userStat 는 반복의 상태를 확인 할 수 있다.
userStat 는 생략 할 수 있는데, 생략하면 user + Stat 가 된다고 보면 된다.
출력결과
타임리프의 반대식
예제 코드
@GetMapping("/condition")
public String condition(Model model) {
addUsers(model);
return "basic/condition";
}
if, unless
타임리프는 해당 조건에 맞지 않는다면 태그 자체를 랜더링 하지 않는다.
switch
( * ) 은 만족하는 조건이 없을 때 사용하는 디폴트이다.
예제 코드
@GetMapping("/comments")
public String comments(Model model) {
model.addAttribute("data", "Spring!");
return "basic/comments";
}
자바스크립트의 표준 HTML 주석은 타임리프가 렌더링 하지 않고, 그대로 남겨둔다.
실행결과
타임리프 파서 주석은 타임리프의 진짜 주석이다. 렌더링에서 주석 부분을 제거한다.
실행결과
실행결과
<th:block> 은 HTML 태그가 아닌 타임리프의 유일한 자체 태그다.
예제 코드
@GetMapping("/block")
public String block(Model model) {
addUsers(model);
return "basic/block";
}
실행결과