[Thymeleaf] 기본객체, 유틸리티 객체

HSRyuuu dev blog·2023년 3월 27일
0

타임리프(Thymeleaf)

목록 보기
4/9

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>

(출력)

    1. default = 2023-03-25T18:11:41.594009300
    1. yyyy-MM-dd HH:mm:ss = 2023-03-25 18:11:41
    1. ${#temporals.day(localDateTime)} = 25
    1. ${#temporals.month(localDateTime)} = 3
    1. ${#temporals.monthName(localDateTime)} = 3월
    1. ${#temporals.monthNameShort(localDateTime)} = 3월
    1. ${#temporals.year(localDateTime)} = 2023
    1. ${#temporals.dayOfWeek(localDateTime)} = 6
    1. ${#temporals.dayOfWeekName(localDateTime)} = 토요일
    1. ${#temporals.dayOfWeekNameShort(localDateTime)} = 토
    1. ${#temporals.hour(localDateTime)} = 18
    1. ${#temporals.minute(localDateTime)} = 11
    1. ${#temporals.second(localDateTime)} = 41
    1. ${#temporals.nanosecond(localDateTime)} = 594009300

(참고) 김영한님 인프런 Spring MVC-2
https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-mvc-2

profile
Exciting dev life / 댓글, 피드백, 질문 환영합니다 !!!

0개의 댓글