반응형

타임리프 8

[Thymeleaf] 타임리프 조건부 평가(if, unless), 주석

조건부 평가 타임리프에는 조건식으로 if와 unless가 존재한다. if, unless 해당 조건이 만족하지 않으면 렌더링하지 않는다. 아래 같은 조건이 주어진 경우 if 조건이 false인 경우 태그 자체가 렌더링 되지 않고 사라지게 된다. unless는 if와 반대, false일 경우 출력 주석 표준 HTML 주석 자바 스크립트 표준 HTML 주석은 렌더링 않고 남겨둔다. 결과값 역시 그대로이다 타임리프 파서 주석 타임리프의 진짜 주석이다. 렌더링에서 주석 부분을 제거한다. 렌더링 후 공백으로 사라짐. html data 타임리프 프로토타입 주석 HTML 파일 소스를 그대로 열면 주석 처리지만 타임리프 렌더링 후 보이는 기능이다. data에 Spring! 이 들어온 뒤 결과값이다. Spring! 출처 ..

Devleop/Thymeleaf 2023.05.17

[Thymeleaf] 타임리프 반복(th:each), 반복 여러 상태 값

반복 타임리프에서 반복은 th:each 사용한다. 여러 상태 값 역시 지원해 준다. Model에 user(name, age) 객체들이 담긴 리스트를 받아올 때 view에서 반복문을 사용해서 출력할 수 있다. 반복 시 오른쪽 컬렉션 ${users}의 값을 하나씩 꺼내서 왼쪽 변수에 담아 태그를 반복 실행하는 것이다. List 뿐 아니라 java.util.Iterable , java.util.Enumeration을 구현한 모든 객체를 반복 사용할 수 있다. name age name 0 여러 상태 값 반복의 두 번째 파라미터를 설정해 반복의 상태를 확인할 수 있다. 두 번째 파라미터는 생략가능하고 생략 시 지정한 변수명(user) + Stat이 된다. 생략을 해도 지정 변수명이랑 동일하다. userStat.*..

Devleop/Thymeleaf 2023.05.17

[Thymeleaf] 타임리프 속성 설정, 추가, checkbox

태그 속성 타임리프는 HTML 태그에 th:* 속성을 넣어서 동작한다. *에 들어간 속성을 기존 속성을 대체한다. 기존 속성이 없다면 새로 만들어 사용한다. 속성 설정 th:* 에서 *에 name 속성이 들어갔기 때문에 기존 name의 값이 타임리프 렌더링 후 name="userA"로 대체가 될 것이다. 만일 기존 name의 값이 없다면 새로 만들게 된다. 후 속성 추가 th:attrappend 속성 값의 뒤에 값을 추가한다. th:attrprepend 속성 값의 앞에 값을 추가한다. th:classappend class 속성에 자연스럽게 추가한다. - th:attrappend = - th:attrprepend = - th:classappend = Checked 처리 - checked o - checke..

Devleop/Thymeleaf 2023.05.17

[Thymeleaf] 타임리프 리터럴(literals)과 연산(>, +, Elvis, No-Operation)

리터럴 소스 코드상에 고정된 값을 말하는 용어 문자 'Hello' 숫자 10 Boolean true, false null null 문자 리터럴 항상 작은 따옴표 (')로 감싸야한다. 하지만 공백 없이 쭉 이어진다면 하나의 의미있는 토큰으로 인식하여 아래와 같이 따옴표를 생략할 수 있다. (A-Z , a-z , 0-9 , [] ,. , - , _) 리터럴 대체 (Litreal substitutions) |...| 기호를 이용해서도 가능하다. 연산 (>, +, Elvis, No-Operation) 타임리프 연산은 자바와 크게 다르지 않다. HTML 안에서 사용되기 때문에 엔티티 사용 부분은 주의해야 한다. 산술연산 10 + 2 = 10 % 2 == 0 = 비교 연산 HTML 엔티티 사용해야 하는 부분을 주의..

Devleop/Thymeleaf 2023.05.17

[Thymeleaf] 타임리프 url 생성하기

url 생성하기 @{...} 이용해서 url 링크를 만들 수 있다. @{/hello} -> /hello basic url 쿼리 파라미터 Controller에서 넘어온 param1, param2은 각각 매핑된다. () 안 부분은 쿼리 파라미터로 처리된다. @{/hello(param1=${param1}, param2=${param2})} -> /hello? param1=data1&param2=data2 hello query param 경로 변수 {/hello/{param1}/{param2}(param1=${param1}, param2=${param2})} -> /hello/data1/data2 path variable 경로 변수 + 쿼리 파라미터 @{/hello/{param1}(param1=${param1}..

Devleop/Thymeleaf 2023.05.16

[Thymeleaf] 타임리프 request, response, servletContext

스프링 부트 3.0 아래 버전에서는 request, responese, session, servletContext, locale 객체들을 제공했지만 위 버전부터는 지원을 하지 않는다. 그렇기 때문에 Controller 에서 Model에 저장을 해서 view로 넘겨줘야 한다. @GetMapping("/url") public String basicObjects(Model model, HttpServletRequest request, HttpServletResponse response, HttpSession session) { model.addAttribute("request", request); model.addAttribute("response", response); model.addAttribute("s..

Devleop/Thymeleaf 2023.05.16

[Thymeleaf] 타임리프 SpringEL

SpringEL 타임 리프에서는 변수를 사용할 때 변수 표현식을 이용한다. ${...} Object Model에서 받아온 user 객체 데이터를 사용할 때 ${user.username} = ${user['username']} = ${user.getUsername()} = List user 객체를 List에 담아 Model에서 받아와 사용할 때 ${users[0].username} = ${users[0]['username']} = ${users[0].getUsername()} = Map user 객체를 Map 자료구조에 담은 뒤 Model에 받아와 사용할 때 ${userMap['userA'].username} = ${userMap['userA']['username']} = ${userMap['userA']..

Devleop/Thymeleaf 2023.05.16

[Thymeleaf] 타임리프 text, utext

text 타임 리프의 기본적인 text 출력 기능을 알아보자. controller에서 model의 "data"에 값이 담겨왔다고 생각을 한다. 태그에 th:text 사용하기 [[${data}]] text에 직접 넣어 사용하기 th:text 사용해서 출력 컨텐츠 안에서 직접 출력 = [[${data}]] Controller에서 Hello, Spring! 이 data에 담겨올 때 태그를 사용해 spring 단어를 진하게 하려 한다. Hello, Spring! 이런 식으로 보냈을 경우 실행 결과는 의도한 대로 작동하지 않는다. 는 &gt 변경된 것을 확인할 수 있다. HTML 엔티티 웹 브라우저는 [(...)] th:text 사용해서 출력 컨텐츠 안에서 직접 출력 = [(${data})] 실제 서비스를 개발할..

Devleop/Thymeleaf 2023.05.16
반응형