스프링/4. 스프링 MVC-2

1. 타임리프 text escaped, unescaped

sdafdq 2023. 8. 16. 22:16
@Controller
@RequestMapping("/basic")
public class BasicController {

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

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

간단하게 basic은 model에 data라는 키로 문자열을 담아서 넘긴다.

 

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

저렇게 하면 된다. 그냥 th:text="${data}"

아예 태그 안쪽에서 직접 출력하려면 [[${data}]] 이렇게

  • th:text 사용 Hello Spring!
  • 컨텐츠 안에서 직접 출력 Hello Spring!

출력 결과

 

 

 

다음 unescaped 

이스케이프란 탈출, 즉 기존 정해진 문자규칙에서 탈출한다는 뜻이다.

 

model.addAttribute("data","Hello <b>Spring!</b>");

data란 이름에 b태그를 넣어 보낸다.

 

<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>

utext가 unescaped로 쓴다는 뜻이다.

 

  • th:text = Hello <b>Spring!</b>
  • th:utext = Hello Spring!

출력 결과.

unescaped로 쓴건 내가 컨트롤러에서 "data"라는 키로 보낸 걸 그대로 문자규칙을 적용해서 태그로써 작동하였다.

model.addAttribute("data","Hello <b>Spring!</b>");

escaped된 상태로 작동한 부분의 페이지 소스를 보면

<li><span>[[...]] = </span>Hello    &lt;    b    &gt;    Spring!    &lt;    /b    &gt;   </li>

이렇게 되어 있다. 알아서 치환되어 들어갔다. (띄어쓰기는 내가 잘보이라고 한거임.)

 

 

  • [[...]] = Hello <b>Spring!</b>
  • [(...)] = Hello Spring!

이건 아래 ul의 출력 결과인데, 

[(${data})] 이게 unescaped다.

 

 

 

기본적으로 escaped 상태로 써야 한다. 안그럼 랜더링 과정에서 문제가 발생할 요지가 크다. 

내가 직접 태그로 쓰고 싶은 경우에만 의식하고 unescaped로 쓴다.

default가 escaped 상태다.

 

 

'스프링 > 4. 스프링 MVC-2' 카테고리의 다른 글

6. thymeleaf 리터럴  (0) 2023.08.22
5. thymeleaf url  (0) 2023.08.21
4. 유틸 객체, 시간표현  (0) 2023.08.21
3. thymeleaf 기본 제공되는 객체  (0) 2023.08.21
2. 변수  (0) 2023.08.21