사용법
<#assign name=value>
or
<#assign name1=value1 name2=value2 ... nameN=valueN>
or
<#assign same as above... in namespacehash>
or
<#assign name>
capture this
</#assign>
or
<#assign name in namespacehash>
capture this
</#assign>
설명 :
name: name은 변수를 말한다. 변수는 문자열로 된 이름이면 가능하다. 예를 들면 <#assign "foo-bar" = 1>. 으로 정의할수도 있다.
value: 변수에 들어갈 값을 나타내며, 수식이 들어올 수 있다.
namespacehash: namespach를 지정할 수 있다.
설명
새로운 변수를 생성하거나, 기존의 변수의 값을 변경하고자 할때 이용이 가능하다.
예제: season이라는 변수에 시퀀스를 설정한다. 시퀀스는 배열과 같다.
|
|
|
|
<#assign seasons = ["winter", "spring", "summer", "autumn"]> | |
|
|
|
|
예제 : test라는 변수의 값에 1을 더한다.
|
|
|
|
<#assign test = test + 1> | |
|
|
|
|
편리한 기능으로, 하나의 assign 태그로 여러개의 변수에 값을 할당할 수 있다. 예를 들면 다음과 같다.
|
|
|
|
<#assign
seasons = ["winter", "spring", "summer", "autumn"]
test = test + 1
> | |
|
|
|
|
namespace는 변수를 특정 네임스페이스에 담을수 있도록 해준다. in이라는 키워드를 이용하여 네임스페이스를 지정할 수 있으며, 네임스페이스를 지정하면 현재의 변수가 아닌 특정 네임스페이스의 값을 대치할 수 있다. 예를 들어 다음 예제는 /mylib.ftl이라는 내용에 있는 bgColor의 값을 red로 바꿔주는 역할을 한다.
|
|
|
|
<#import "/mylib.ftl" as my>
<#assign bgColor="red" in my> | |
|
|
|
|
assign의 극단적인 사용방법은 스타트 태그와 엔드태그 사이에 생성된 결과를 잠시 저장하는데 있다. 다음 예제를 보자.
|
|
|
|
<#macro myMacro>foo</#macro>
<#assign x>
<#list 1..3 as n>
${n} <@myMacro />
</#list>
</#assign>
Number of words: ${x?word_list?size}
${x} | |
|
|
|
|
이것을 프린트 하면 다음 결과가 나온다.
|
|
|
|
Number of words: 6
1 foo
2 foo
3 foo
| |
|
|
|
|
한가지 당부하고자 하는 것은 다음과 같이 변수에 값을 넣지 말라는 말이다.
|
|
|
|
<#assign x>Hello ${user}!</#assign> <#-- BAD PRACTICE! --> | |
|
|
|
|
그냥 단순히 이렇게 작성하는것이 좋은 습관이다.
|
|
|
|
<#assign x="Hello ${user}!"> | |
출처 :
http://freemarker.sourceforge.net/docs/ref_directive_assign.html