목록Spring/Thymeleaf (26)
코드 그라데이션
속성 값 설정 타임리프 태그 속성(Attribute) 타임리프는 주로 HTML 태그에 th:* 속성을 지정하는 방식으로 동작한다. th:* 로 속성을 적용하면 기존 속성을 대체한다. 기존 속성이 없으면 새로 만든다. BasicController 추가 @GetMapping("/attribute") public String attribute() { return "basic/attribute"; } /resources/templates/basic/attribute.html 속성 설정 속성 추가 th:attrappend, th:attrprepend 및 th:classappend를 사용하여 클래스 속성 추가 - th:attrappend = - th:attrprepend = - th:classappend = che..
연산 - 타임리프 연산은 자바와 크게 다르지 않다. - HTML안에서 사용하기 때문에 HTML 엔티티를 사용하는 부분만 주의하면 된다. /resources/templates/basic/operation.html 산술 연산 10 + 2 = 10 % 2 == 0 = 비교 연산 1 > 10 = 1 gt 10 = 1 >= 10 = 1 ge 10 = 1 == 10 = 1 != 10 = 조건식 (10 % 2 == 0)? '짝수':'홀수' = Elvis 연산자 ${data}?: '데이터가 없습니다.' = ${nullData}?: '데이터가 없습니다.' = No-Operation ${data}?: _ = 데이터가 없습니다. ${nullData}?: _ = 데이터가 없습니다. 부연설명 1. 산술 연산: (1) 10 + ..
리터럴 - 소스코드 상에 고정된 값을 말하는 용어 ex. "Hello" - 문자 리터럴 / 10,20 - 숫자 리터럴 타임리프는 다음과 같은 리터럴이 있다. 타임리프에서 문자 리터럴은 항상 ' (작은 따옴표)로 감싸야 한다. 그런데 문자를 항상 ' 로 감싸는 것은 너무 귀찮은 일이다. 공백 없이 쭉 이어진다면 하나의 의미있는 토큰으로 인지해서 다음과 같이 작은 따옴표를 생략할 수 있다. 오류 수정 BasicController에 추가 리터럴 'hello' + ' world!' = 'hello world!' = 'hello ' + ${data} = 리터럴 대체 |hello ${data}| = 'hello' + ' world!' = : 작은 따옴표로 둘러싸인 문자열을 Thymeleaf의 th:text 속성을 ..
URL 링크 타임리프에서 URL을 생성할 때는 @{...} 문법을 사용하면 된다. BasicController 에 추가 @GetMapping("/link") public String link(Model model) { model.addAttribute("param1", "data1"); model.addAttribute("param2", "data2"); return "basic/link"; } /resources/templates/basic/link.html URL 링크 basic url hello query param path variable path variable + query parameter 설명 Thymeleaf의 th:href 속성을 사용하여 상대 URL "/hello"를 생성한다. 이 U..
타임리프는 문자, 숫자, 날짜, URI등을 편리하게 다루는 다양한 유틸리티 객체들을 제공한다. 타임리프 유틸리티 객체들 타임리프 유틸리티 객체 https://www.thymeleaf.org/doc/tutorials/3.0/usingthymeleaf.html#expression-utilityobjects Tutorial: Using Thymeleaf 1 Introducing Thymeleaf 1.1 What is Thymeleaf? Thymeleaf is a modern server-side Java template engine for both web and standalone environments, capable of processing HTML, XML, JavaScript, CSS and even ..
타임리프의 기본 객체들 주의! - 스프링 부트 3.0 스프링 부트 3.0 부터는 ${#request} , ${#response} , ${#session} , ${#servletContext} 를 지원하지 않는다. 만약 사용하게 되면 다음과 같은 오류가 발생한다. 스프링 부트 3.0이라면 직접 model 에 해당 객체를 추가해서 사용해야 한다. 그런데 #request 는 HttpServletRequest 객체가 그대로 제공되기 때문에 데이터를 조회하려면 request.getParameter("data") 처럼 불편하게 접근해야 한다. 이런 점을 해결하기 위해 편의 객체도 제공한다. 스프링 부트 3.0 미만이라면 (현재 프로젝트에 해당) BasicController에 추가 @GetMapping("/basic..
타임리프에서 변수를 사용할 때는 변수 표현식을 사용한다. 변수 표현식 : ${...} 이 변수 표현식에는 스프링 EL이라는 스프링이 제공하는 표현식을 사용할 수 있다. /resources/templates/basic/variable.html SpringEL 표현식 Object ${user.username} = ${user['username']} = ${user.getUsername()} = List ${users[0].username} = ${users[0]['username']} = ${users[0].getUsername()} = Map ${userMap['userA'].username} = ${userMap['userA']['username']} = ${userMap['userA'].getUsern..
텍스트 - text, utext 실행 http://localhost:8080/basic/text-basic Escape HTML 문서는 같은 특수 문자를 기반으로 정의된다. 따라서 뷰 템플릿으로 HTML 화면을 생성할 때는 출력하는 데이터에 이러한 특수 문자가 있는 것을 주의해서 사용해야 한다. 변경 전 "Hello Spring!" 변경 후 "Hello Spring!" 테그를 사용해서 Spring!이라는 단어가 진하게 나오도록 해보자. 웹 브라우저에서 실행결과를 보면 개발자가 의도한 것은 가 있으면 해당 부분을 강조하는 것이 목적이었다. 그런데 태그가 그대로나온다. 소스보기를 하면