1. 타임리프가 제공하는 기본 객체
타임리프가 제공하는 기본 객체
${#request}
- 스프링 부트 3.0부터 제공하지 않는다.${#response}
- 스프링 부트 3.0부터 제공하지 않는다.${#session}
- 스프링 부트 3.0부터 제공하지 않는다.${#servletContext}
- 스프링 부트 3.0부터 제공하지 않는다.${#locale}
@GetMapping("/basic-objects")
public String basicObjects(HttpSession session){
session.setAttribute("sessionData", "Hello Session");
return "basic/basic-objects";
}
@Component("helloBean")
static class HelloBean{
public String hello(String data){
return "Hello"+ data;
}
}
표현식 기본 객체
<li>request = <span th:text="${#request}"></span></li>
<li>response = <span th:text="${#response}"></span></li>
<li>session = <span th:text="${#session}"></span></li>
<li>servletContext = <span th:text="${#servletContext}"></span></li>
<li>locale = <span th:text="${#locale}"></span></li>
(출력)
- request = org.apache.catalina.connector.RequestFacade@280841ca
- response = org.apache.catalina.connector.ResponseFacade@5b2c7765
- session = org.apache.catalina.session.StandardSessionFacade@2d6ed05c
- servletContext = org.apache.catalina.core.ApplicationContextFacade@4fa06e47
- locale = ko_KR
편의 객체
<li>Request Parameter = <span th:text="${param.paramData}"></span></li>
<li>session = <span th:text="${session.sessionData}"></span></li>
<li>spring bean = <span th:text="${@helloBean.hello('Spring!')}"></span></li>
- HTTP 요청 파라미터 접근: param
- HTTP 세션 접근: session
- 스프링 빈에 직접 접근: @
(출력)
- Request Parameter = HelloParam
- session = Hello Session
- spring bean = HelloSpring!
스프링부트 3.0 이상
- 스프링부트 3.0 이상 부터는 직접 모델에 해당 객체를 추가해서 사용해야 한다.
@GetMapping("/basic-objects")
public String basicObjects(Model model, HttpServletRequest request,
HttpServletResponse response, HttpSession session) {
session.setAttribute("sessionData", "Hello Session");
model.addAttribute("request", request);
model.addAttribute("response", response);
model.addAttribute("servletContext", request.getServletContext());
return "basic/basic-objects";
}
2. 유틸리티 객체
- #message : 메시지, 국제화 처리
- #uris : URI 이스케이프 지원
- #dates : java.util.Date 서식 지원
- #calendars : java.util.Calendar 서식 지원
- #temporals : 자바8 날짜 서식 지원
- #numbers : 숫자 서식 지원
- #strings : 문자 관련 편의 기능
- #objects : 객체 관련 기능 제공
- #bools : boolean 관련 기능 제공
- #arrays : 배열 관련 기능 제공
- #lists , #sets , #maps : 컬렉션 관련 기능 제공
- #ids : 아이디 처리 관련 기능 제공
타임리프 유틸리티 객체 메뉴얼
https://www.thymeleaf.org/doc/tutorials/3.0/usingthymeleaf.html#expression-utility-objects
유틸리티 객체 예시
https://www.thymeleaf.org/doc/tutorials/3.0/usingthymeleaf.html#expression-utility-objects
3. 자바8의 날짜 사용
타임리프에서 자바8 날짜인 LocalDate , LocalDateTime , Instant 를 사용하려면 추가 라이브러리가 필요하다.
스프링 부트 타임리프를 사용하면 해당 라이브러리가 자동으로 추가되고 통합된다.
타임리프 자바8 날짜 지원 라이브러리 : thymeleaf-extras-java8time
<li>1. default = <span th:text="${localDateTime}"></span></li>
<li>2. yyyy-MM-dd HH:mm:ss = <span th:text="${#temporals.format(localDateTime,'yyyy-MM-dd HH:mm:ss')}"></span></li>
<li>3. ${#temporals.day(localDateTime)} = <span th:text="${#temporals.day(localDateTime)}"></span></li>
<li>4. ${#temporals.month(localDateTime)} = <span th:text="${#temporals.month(localDateTime)}"></span></li>
<li>5. ${#temporals.monthName(localDateTime)} = <span th:text="${#temporals.monthName(localDateTime)}"></span></li>
<li>6. ${#temporals.monthNameShort(localDateTime)} = <span th:text="${#temporals.monthNameShort(localDateTime)}"></span></li>
<li>7. ${#temporals.year(localDateTime)} = <span th:text="${#temporals.year(localDateTime)}"></span></li>
<li>8. ${#temporals.dayOfWeek(localDateTime)} = <span th:text="${#temporals.dayOfWeek(localDateTime)}"></span></li>
<li>9. ${#temporals.dayOfWeekName(localDateTime)} = <span th:text="${#temporals.dayOfWeekName(localDateTime)}"></span></li>
<li>10. ${#temporals.dayOfWeekNameShort(localDateTime)} = <span th:text="${#temporals.dayOfWeekNameShort(localDateTime)}"></span></li>
<li>11. ${#temporals.hour(localDateTime)} = <span th:text="${#temporals.hour(localDateTime)}"></span></li>
<li>12. ${#temporals.minute(localDateTime)} = <span th:text="${#temporals.minute(localDateTime)}"></span></li>
<li>13. ${#temporals.second(localDateTime)} = <span th:text="${#temporals.second(localDateTime)}"></span></li>
<li>14. ${#temporals.nanosecond(localDateTime)} = <span th:text="${#temporals.nanosecond(localDateTime)}"></span>
(출력)
- default = 2023-03-25T18:11:41.594009300
- yyyy-MM-dd HH:mm:ss = 2023-03-25 18:11:41
- ${#temporals.day(localDateTime)} = 25
- ${#temporals.month(localDateTime)} = 3
- ${#temporals.monthName(localDateTime)} = 3월
- ${#temporals.monthNameShort(localDateTime)} = 3월
- ${#temporals.year(localDateTime)} = 2023
- ${#temporals.dayOfWeek(localDateTime)} = 6
- ${#temporals.dayOfWeekName(localDateTime)} = 토요일
- ${#temporals.dayOfWeekNameShort(localDateTime)} = 토
- ${#temporals.hour(localDateTime)} = 18
- ${#temporals.minute(localDateTime)} = 11
- ${#temporals.second(localDateTime)} = 41
- ${#temporals.nanosecond(localDateTime)} = 594009300
(참고) 김영한님 인프런 Spring MVC-2
https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-mvc-2
반응형
'Front-End > Web Views' 카테고리의 다른 글
[JSP] JSP 간단 정리 (0) | 2023.08.01 |
---|---|
[Thymeleaf] 기본 문법 (연산, 반복, if, 블록) (0) | 2023.05.04 |
[Thymeleaf, html, bootstrap] 자주 사용하는 태그 모음 (0) | 2023.04.22 |
[Thymeleaf] 기본 문법 (text, 변수표현, URL 링크, 리터럴) (0) | 2023.04.20 |
[Thymeleaf] 타임리프 란? (0) | 2023.04.20 |