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

6. thymeleaf 리터럴

sdafdq 2023. 8. 22. 00:06

리터럴이란 변하지 않는 값, 그러니까.. 

const int num = 100;

여기서 num이 상수라면 100이 리터럴 이라고 한다..

 

타임리프에도 리터럴이 있는데, 일단 기본적으로 리터럴이란 어떤 의미를 가지고 있는 고정된 값? 같은 의미라고 보면 될려나? 파이나 빛의 속도같은?

 

일단 문자는 리터럴 일 수 밖에 없다.

그다음 숫자도 사실 리터럴.

true, false 같은 것도

null도.

 

어.. 아마 리터럴이 그 매직넘버 그런 식으로 쓰는 거 말하는 듯. 즉, 어떤 모델에 담겨오거나 아니면 param이나 기본 객체같은 게 아닌 내가 직접 문자, 숫자, false, null 이런 거 쓸 때 말하는 듯.

 

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

간단하게 모델에 data라는 키에다 "Spring!" 이라는 값을 담았다.

 

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

thymeleaf에서 문자를 직접 쓸 때는 ' ' 작은 따옴표 안에 써야 함. " ' hello ' + ' world! ' " 나 " 'hello world' " 그냥 그게 규칙임.

근데 문자를 항상 감싸는 건 귀찮은 일이라, A~Z,a-z,0-9,[], . , -, _ 이런 것들끼리만 공백없이 이어지는 건 하나로 인지하게 해준다고 함.

 

문자열은 원래 ' ' 작은 따옴표 안에 써야 한다. 근데 그건 귀찮은 일이니 (왜냐하면 뭔가 타임리프의 값을 표현할때는 이미 큰따옴표로 감싸니까) A~Z,a-z,0-9,[], . , -, _ 이런 것들끼리의 공백없는 조합은 하나로 봐준다.

근데 그냥 쉽게 리터럴 대체문법 쓰면 편하다.

"|hello ${data}|"

그냥 자유롭게 리터럴 쓰면 됨. 그러다 값 쓰고 싶을 경우는 ${key} 하면 되고.

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

8. 타임리프 속성  (0) 2023.08.22
7. 타임리프 연산  (0) 2023.08.22
5. thymeleaf url  (0) 2023.08.21
4. 유틸 객체, 시간표현  (0) 2023.08.21
3. thymeleaf 기본 제공되는 객체  (0) 2023.08.21