오봉이와 함께하는 개발 블로그

스프링 MVC 2 - literal(리터럴) 본문

BE/Thymeleaf

스프링 MVC 2 - literal(리터럴)

오봉봉이 2022. 8. 16. 23:00
728x90

리터럴

리터럴은 소스 코드상에 고정된 값을 말하는 용어다.
예를 들어 다음 코드에서 "Hello"는 문자 리터럴, 10, 20는 숫자 리터럴이다.

String a = "Hello"
int a = 10 * 20

타임리프는 다음과 같은 리터럴이 있다.

  • 문자 : 'hello'
  • 숫자 : 10
  • 불린 : true, false
  • null : null

타임리프에서 문자 리터럴은 항상 '(작은 따옴표)로 감싸야 한다.
<span th:text="'hello'">

하지만 문자를 항상 작은 따옴표로 감싸는 것은 번거로운 일이기 때문에 공백 없이 쭉 이어진다면 하나의 의미있는 토큰으로 인지해서 작은 따옴표를 생략할 수 있다.
조건 : A-Z, a-z, 0-9, [], ., -, _
<span th:text="hello">

오류
<span th:text="hello world!"></span>
문자 리터럴은 원칙상 '로 감싸야 하는데 중간에 공백이 하나 있어서 하나의 토큰으로 인식되지 않는다.

수정
<span th:text="'hello world!'"></span>
'로 감싸줬기 때문에 정상 동작한다.

코드, 결과

@GetMapping("/literal")
public String literal(Model model) {
    model.addAttribute("data", "Spring!");
    return "basic/literal";
}
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<h1>리터럴</h1>
<ul>
    <!--주의! 다음 주석을 풀면 예외가 발생함-->
    <!--    <li>"hello world!" = <span th:text="hello world!"></span></li>-->
    <li>'hello' + ' world!' = <span th:text="'hello' + ' world!'"></span></li>
    <li>'hello world!' = <span th:text="'hello world!'"></span></li>
    <li>'hello ' + ${data} = <span th:text="'hello ' + ${data}"></span></li>
    <li>리터럴 대체 |hello ${data}| = <span th:text="|hello ${data}|"></span></li>
</ul>

</body>
</html>
'hello' + ' world!' = hello world!
'hello world!' = hello world!
'hello ' + ${data} = hello Spring!
리터럴 대체 |hello ${data}| = hello Spring!

리터럴 대체(Literal substitutions)

<span th:text="|hello ${data}|">
리터럴 대체 문법을 사용하면 마치 템플릿을 사용하는 것 처럼 편리하다.

출처 : 인프런 김영한 지식공유자님 강의 스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
728x90
Comments