본 게시물은 스스로의 공부를 위한 글입니다.
틀린 내용이 있을 수 있습니다.
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.usernameuser['username']user.getUsername()List
users[0].usernameusers[0]['username']users[0].getUsername()Map
userMap['userA'].usernameuserMap['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편(김영한)'을 스스로 정리한 글입니다.
자세한 내용은 해당 강의를 참고해주세요.