변수 기본 설정:#set ($valok = "hello foxdevelop")
변수 경계 ${} 와 . 접근 차이 분석
| 코드 | 렌더링 결과 | 원리 설명 |
|---|---|---|
$valok | hello foxdevelop | 기본 변수 출력 |
$valok.com | hello foxdevelop.com | Velocity가 valok 객체의 cn 속성/메서드를 호출하려 합니다. 문자열에 cn 메서드가 없으므로 변수와 접미사가 그대로 출력됩니다 |
${valok}.com | hello foxdevelop.com | {}가 변수 범위를 고정하며 valok 렌더링 뒤에 .com 문자열을 붙입니다(권장하는 연결 문법) |
$!valok.com | hellofoxdevelop.com | $! 조용한 참조:변수가 존재하면 $valok와 동일하고 없을 때는 빈 문자열을 출력하며 $xxx를 그대로 보여주지 않습니다 |
${valok.com} | 빈 값 | valok.com 속성을 읽으려 시도합니다. 문자열에 com 속성이 없어 변수가 없는 것으로 처리됩니다. 빈 값을 원한다면 $!{valok.com}을 사용하세요 |
${valok}.cn ✅ 변수 + 접미사 연결${valok.cn} ❌ valok 객체 안의 cn 속성 접근
작은따옴표 / 큰따옴표 & 변수 붙여쓰기
| 코드 | 렌더링 결과 | 원리 설명 |
|---|---|---|
what$valok | whathello foxdevelop | 직접 연결, Velocity가 자동으로 변수 경계를 인식 |
what$"valok" | what$”valok” | ❌문법 오류. $ 바로 뒤에 따옴표를 쓸 수 없어 변수를 분석할 수 없음 |
what"$valok" | what”hello foxdevelop“ | 따옴표는 일반 문자일 뿐 템플릿 안에서 문자열 구문으로 작동하지 않고 변수는 정상 처리됨 |
what'$valok' | what’hello foxdevelop‘ | 위와 동일, 작은따옴표도 평범한 문자 |
$valokwhat | $valokwhat | ❌변수 인식 불가! Velocity가 valokwhat 전체를 변수명으로 보고 없으면 원문을 출력 |
${valok}what | hello foxdevelopwhat | ✅중괄호로 범위를 고정, 변수와 글자가 붙는 문제 해결 |
정리
- 변수가 다른 글자와 이어질 때 반드시
${변수이름}사용
잘못된 예:$valokwhat;올바른 예:${valok}what - 접미사 붙일 때:
${valok}.cn이지${valok.cn}으로 쓰지 마세요 $!변수조용한 참조:변수가 없으면 빈 값이 나오고$xxx가 출력되지 않음- 템플릿 HTML 안의 따옴표는 그냥 문자;#set 할당 구문 안에서만 작은따옴표(변수 해석 안함), 큰따옴표(변수 해석함) 차이가 생깁니다
#set($a = "$valok") // 큰따옴표:변수 해석, a=hello bamn
#set($a = '$valok') // 작은따옴표:변수 해석 안함, a=$valokCode language: PHP (php)
변수 경계 보충 설명