th:text을 사용한다.<span th : text ="${data}">[[...]]를 사용한다.컨텐츠 안에서 직접 출력하기 = [[${data}]]우선, 데이터를 뷰로 넘기는 컨트롤러를 작성한다.
@Controller
@RequestMapping("/basic")
public class BasicController {
@GetMapping("text-basic")
public String textBasic(Model model){
model.addAttribute("data","hello! <b>Spring!</b>");
return "basic/text-basic";
}
model객체에 문자열을 담아 뷰에 전송하고, 출력할 뷰를 작성한다.
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1>컨텐츠에 데이터 출력하기</h1>
<ul>
<li>th:text 사용 <span th:text="${data}"></span> </li>
<li>컨텐츠 안에서 직접 출력하기 = [[${data}]]</li>
</ul>
</body>
</html>
뷰 템플릿으로 HTML 화면을 생성할 때는 출력하는 데이터에 <,>와 같은 특수문자가 있는것은 주의해서 사용해야 한다.
웹 브라우저는 <를 HTML 태그의 시작으로 인식한다.
<를 태그의 시작이 아닌 문자로 표현할 수 있는 방법이 필요한데, 이를 HTML 엔티티라고 한다.이스케이프(ESCAPE)라고 한다.타임리프가 제공하는 th:text와 [[...]]는 기본적으로 이스케이프를 제공한다.
< -> $lt;> -> $gt;
이런 이스케이프 기능을 사용하지 않으려면 어떻게 해야할까?
th:text -> th:utext[[...]] -> [(...)]<h1>text vs utext</h1>
<ul>
<li>th:text = <span th:text="${data}"></span></li>
<li>th:utext = <span th:utext="${data}"></span></li>
</ul>
<h1><span th:inline="none">[[...]] vs [(...)]</span></h1>
<ul>
<li><span th:inline="none">[[...]] = </span>[[${data}]]</li>
<li><span th:inline="none">[(...)] = </span>[(${data})]</li>
</ul>
<b></b>가 잘 적용 된 것을 확인 할 수있다!