[Thymeleaf] 블록
·
타임리프
웹 화면을 만들다 보면 데이터를 반복 출력하거나 조건부로 보여줘야 할 때가 많다. 보통은 나 같은 HTML 태그에 타임리프 속성을 붙여 처리한다. 하지만 어떤 경우에는 굳이 의미 없는 태그를 추가해야 하는 상황이 생긴다.오늘은 이런 상황을 해결하기 위해 타임리프에서 제공하는 유일한 자체 태그 에 대해 알아본다. 은 화면에는 출력되지 않지만, 반복문이나 조건문을 묶는 용도로 활용할 수 있어 매우 유용하다. 1. 컨트롤러에서 데이터 준비하기예제를 위해 컨트롤러에서 사용자 리스트를 모델에 담아 뷰로 넘긴다.@GetMapping("/block")public String block(Model model) { addUsers(model); return "basic/block";}private void ..
[Thymeleaf] 주석
·
타임리프
웹 화면을 만들다 보면 특정 코드를 잠깐 숨기거나, 디자이너와 협업 시 불필요한 부분을 가려둘 때 주석이 필요하다.타임리프는 이런 상황을 지원하기 위해 표준 HTML 주석, 타임리프 파서 주석, 타임리프 프로토타입 주석 세 가지 방식을 제공한다.이제 실제 예제를 통해 어떻게 동작하는지 살펴보자. 1. 컨트롤러에서 데이터 준비하기@GetMapping("/comments")public String comments(Model model) { model.addAttribute("data", "Spring!"); return "basic/comments";}여기서 data = Spring! 값을 뷰에 전달한다. 2. 뷰 템플릿 작성하기예시html data1. 표준 HTML 주석html data-->..
[Thymeleaf] 조건부 평가 (if, unless, switch)
·
타임리프
웹 화면을 만들다 보면 특정 조건에 따라 데이터를 다르게 표시해야 하는 경우가 많다.예를 들어 나이가 20세 미만이면 "미성년자"라고 표시하거나, 나이에 맞는 라벨을 붙여야 할 수 있다.Thymeleaf는 이런 상황을 쉽게 처리할 수 있도록 th:if, th:unless, th:switch 같은 조건식 기능을 제공한다. 이번 글에서는 조건문을 어떻게 쓰는지, 그리고 결과가 어떻게 나오는지 살펴본다 1. 컨트롤러 코드먼저 데이터를 뷰에 넘기기 위해 컨트롤러를 작성한다.@GetMapping("/condition")public String condition(Model model) { addUsers(model); return "basic/condition";}private void addUsers..
[Thymeleaf] 반복
·
타임리프
웹 화면에서 리스트 데이터를 출력해야 할 때가 많다. 예를 들어 사용자 목록, 게시글 목록, 주문 내역 같은 것들이 있다. 이런 경우에 개발자가 직접 반복문을 작성하는 대신, Thymeleaf는 th:each라는 속성을 제공해서 템플릿 안에서 간단히 반복 처리를 할 수 있도록 도와준다. 이제 실제 예시를 통해 어떻게 사용하는지 하나씩 알아보자. 1. 컨트롤러에서 데이터 준비하기컨트롤러에서 사용자 리스트를 만들어서 모델에 담는다.@GetMapping("/each")public String each(Model model) { addUsers(model); return "basic/each";}private void addUsers(Model model) { List list = new Ar..
[Thymeleaf] 속성 값 설정
·
타임리프
웹 화면을 만들다 보면 HTML 태그의 속성을 동적으로 바꿔야 하는 경우가 많다.예를 들어, input 태그의 name, class 같은 속성을 서버 데이터에 따라 변경하거나, 체크박스의 checked 여부를 조건에 맞게 처리해야 할 수도 있다.이번 글에서는 타임리프가 제공하는 속성 제어 기능을 정리해 본다.th:* 속성을 이용한 기본 속성 대체th:attrappend / th:attrprepend / th:classappend 를 이용한 속성 값 추가th:checked 를 이용한 체크박스 처리하나씩 예제와 함께 살펴보자. 1. 컨트롤러에서 뷰 호출하기속성 제어는 서버 데이터를 직접 쓰지 않아도 설명할 수 있으므로 단순히 템플릿을 리턴하는 컨트롤러만 준비한다.@GetMapping("/attribute")..
[Thymeleaf] 연산
·
타임리프
Thymeleaf에서는 산술 연산, 비교 연산, 조건식, Elvis 연산자, No-Operation 같은 다양한 연산을 지원한다. 기본 개념은 자바와 비슷하지만, HTML 안에서 쓰는 표현식이라는 점에서 몇 가지 주의해야 할 사항이 있다. 이번 글에서는 각각을 예제와 함께 살펴보자. 1. 컨트롤러 코드 준비컨트롤러에서 테스트 데이터를 모델에 담아 뷰로 전달한다.@GetMapping("/operation")public String operation(Model model) { model.addAttribute("nullData", null); model.addAttribute("data", "Spring!"); return "basic/operation";} 2. 뷰 템플릿 예제 산술 연..