타임리프(Thymeleaf) - 기본기능1

SeungTaek·2021년 8월 14일
0

타임리프(Thymeleaf)

목록 보기
1/6
post-thumbnail

본 게시물은 스스로의 공부를 위한 글입니다.
틀린 내용이 있을 수 있습니다.

📌텍스트 - text, utext

  • html 태그 속성에서 텍스트 출력
    <span th:text="${data}">여기 문자가 완전히 대체됩니다!</span>

  • html콘텐츠 영역안에서 출력 [[${data}]]

  • 이스케이프 기능:

    • 게시판 등 사용자로부터 입력을 받는 경우에 사용자가 임의적으로 <br> 등의 태그를 넣었다고 하자. 그럼 그 페이지 전체가 깨지는 경우가 생길 수 있다.

    • 그러므로 사용자가 입력한 <br>등의 태그는 문자로 인식해야 한다. (태그로 해석 X)

    • 이를 위해서 HTML 엔티티라는걸 지원한다.

    • 예를 들어 <모양을 태그의 시작이 아닌, 문자로 인식하기 위해서 &lt;로 나타낸다.

    • 이렇게 HTML 엔티티로 변경하는 것을 이스케이프(escape)라 한다.

    • 그리고 타임리프는 th:text에서 자동적으로 이스케이프가 적용된다.

  • 만약 이스케이프 기능을 사용하고 싶지 않다면?

    • admin 페이지 등에서 의도적으로 태그 사용을 하고 싶을때가 있을 수 있다.
    • 그러면 th:utext, [(...)]를 사용하면 된다.

cf) 🎈HTML에서 제공하는 대표적인 엔티티

엔티티 문자엔티티 이름설명
&nbsp;줄 바꿈 없는 공백
<&lt;보다 작은
>&gt;보다 큰
&&amp;AND 기호
"&quot;큰따옴표
'&apos;작은따옴표

📌SpringEL 표현식

  • 타임리프에서는 객체, list, map에서 데이터를 꺼내오는 방법을 다양하게 지원한다.

  • 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'].getUsername()

cf) 🎈타임리프에선 지역 변수를 th:with사용을 통해 지원해준다. 단, 선언한 태그 내에서만 사용 가능하다.

<div th:with="first=${users[0]}">
 	<p>처음 사람의 이름은 <span th:text="${first.username}"></span></p>
</div>

📌기본 객체들


수정 스프링 부트 3.0부터 아래 4개는 지원하지 않습니다.
스프링 부트 3.0이라면 직접 model 에 해당 객체를 추가해서 사용해야 합니다.
${#request}, ${#response}, ${#session}, ${#servletContext}


${#locale}

  • ex
    <li>request = <span th:text="${#request}"></span></li>

  • 편의 객체

    • HTTP 요청 파라미터 접근: param
      예) ${param.파라미터key}
    • HTTP 세션 접근: session
      예) ${session.세션KEY}
    • 스프링 빈 접근: @
      예) ${@빈이름.메소드(필요시 매개변수)}
  • 원래 같았으면..
public String basicObjects(@RequestParam String paramData, Model model) {
	model.addAttribute("paramData", paramData);
    return "basic/basic-objects";
}

위처럼 해준다음 타임리프에서 사용했어야 했지만,

타임리프에서 바로 <span th:text="${param.paramData}"></span>로 사용가능하다.


인프런의 '스프링 MVC 2편(김영한)'을 스스로 정리한 글입니다.
자세한 내용은 해당 강의를 참고해주세요.

profile
I Think So!

0개의 댓글