본문 바로가기
Framework & Library/Spring Boot

[Spring Boot] : 타임리프 - Escape, Unescape

by 오주현 2022. 2. 4.
반응형

public String textBasic(Model model) {
        model.addAttribute("data", "Hello Spring !");
        return "basic/text-basic";
    }

컨트롤러에서 model에 데이터를 담아서 html에서 값을 띄워준다.

 

<li>th:text 사용<span th:text="${data}"></span></li>
<li>컨텐츠 안에서 직접 출력하기 = [[${data}]]</li>

이렇게 두 가지 방법을 통해 데이터를 출력해 줄 수 있다.

 

두번째 방법을 보면 [[...]] 이런 형식의 문법을 사용했는데 이런 형식의 문법을 Escape(이스케이프)라고 한다. HTML 문서는 <, >와 같은 특수 문자를 기반으로 정의되는데 뷰 템플릿으로 HTML 화면을 생성할 때는 출력하는 데이터에 이런 문자가 있는 것을 주의해야 한다.

 

public String textUnescaped(Model model) {
        model.addAttribute("data", "<b>Hello Spring !</b>");
        return "basic/text-unescaped";
    }

이스케이프를 사용할 때 왜 주의해야 하나면 만약 이처럼 컨트롤러에서 화면 단으로 <b>태그를 포함해서 보내준다. Hello Spring ! 이 이렇게 볼드체로 나타나게 하고 싶은 것이다.

 

[[${data}]]

하지만 이대로 출력하면

이렇게 태그가 적용되지 않고 태그 자체로 출력이 된다.

태그 자체가 출력되지 않고 적용되어 출력되게 하려면 [(,,,)] 문법을 사용하면 된다.

 

<li><span th:inline="none">[[...]] = </span>[[${data}]]</li>
<li><span th:inline="none">[(...)] = </span>[(${data})]</li>

지금 위 두 코드는 지금 윗 줄은 [[...]] 이런 문법을 사용했고 아래는 [(...)] 문법을 사용했다.

출력을 했을 때에는 이렇게 출력이 된다. 이스케이프 처리하지 않고 출력되는 것을 Unescape라고 한다.

하지만 보통은 이스케이프 처리를 해서 코드를 작성한다고 한다. 만약 본인이 게시판 같은 것을 만들었을 때 글쓰는 사람이 이상한 태그를 넣어 작성하면 화면이 다 깨질 수 있기 때문에 그렇다고 한다.

 


스프링 MVC 2편 - 백엔드 웹 개발 활용 기술을 참고하여 공부하였습니다.

 

반응형

댓글