본 게시물은 스스로의 공부를 위한 글입니다.
틀린 내용이 있을 수 있습니다.
html 태그 속성에서 텍스트 출력
<span th:text="${data}">여기 문자가 완전히 대체됩니다!</span>
html콘텐츠 영역안에서 출력 [[${data}]]
이스케이프 기능:
게시판 등 사용자로부터 입력을 받는 경우에 사용자가 임의적으로 <br>
등의 태그를 넣었다고 하자. 그럼 그 페이지 전체가 깨지는 경우가 생길 수 있다.
그러므로 사용자가 입력한 <br>
등의 태그는 문자로 인식해야 한다. (태그로 해석 X)
이를 위해서 HTML 엔티티라는걸 지원한다.
예를 들어 <
모양을 태그의 시작이 아닌, 문자로 인식하기 위해서 <
로 나타낸다.
이렇게 HTML 엔티티로 변경하는 것을 이스케이프(escape)라 한다.
그리고 타임리프는 th:text
에서 자동적으로 이스케이프가 적용된다.
만약 이스케이프 기능을 사용하고 싶지 않다면?
th:utext
, [(...)]
를 사용하면 된다.cf) 🎈HTML에서 제공하는 대표적인 엔티티
엔티티 문자 | 엔티티 이름 | 설명 |
---|---|---|
| 줄 바꿈 없는 공백 | |
< | < | 보다 작은 |
> | > | 보다 큰 |
& | & | AND 기호 |
" | " | 큰따옴표 |
' | ' | 작은따옴표 |
타임리프에서는 객체, 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>
편의 객체
param
${param.파라미터key}
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편(김영한)'을 스스로 정리한 글입니다.
자세한 내용은 해당 강의를 참고해주세요.