리터럴이란 변하지 않는 값, 그러니까..
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 |