freemaker 학습 노트 - 디자인 지도

<# ... > 모든 freemaker 의 내용 을 저장 합 니 다. 이외 의 내용 은 모두 그대로 출력 합 니 다. < @... / > 함수 가 두 개의 경계선 안의 내용 을 호출 하 는 것 입 니 다. 첫 번 째 기 호 는 명령 이나 함수 이름 을 표시 하고 그 다음 에 따 른 매개 변 수 를 표시 합 니 다.freemaker 가 제공 하 는 제 어 는 다음 과 같 습 니 다. < \ # if condition > < \ # elseif condition > < \ # else > < / \ # if > 조건 판단 < \ # list hashor_seq as var> hash 표 나 collection (freemaker 를 sequence 라 고 함) 을 옮 겨 다 니 는 멤버 < \ # macro name param 1 param 2... > < \ # nested param > < / \ # macro > 매크로, 반환 매개 변수 없 음 < \ # function name param 1 param 2 > < \ # return val > < / \ # function > 함수, 반환 매개 변수 var? memberfunction(...) 함수 로 var 를 변환 합 니 다. freemaker 는 build - ins 라 고 합 니 다.실제 내부 유사 member 실현function(var, ...)stringA[M .. N] 하위 문자열 을 가 져 옵 니 다. substring (string A, M, N) {key: value, key 2: value 2...} hash 표 [item 0, item 1, item 2...] 를 직접 정의 합 니 다. 시퀀스 hash 0 [key 0] 을 직접 정의 합 니 다. hash 표 의 key 에 대응 하 는 요소 seq 0 [5] 액세스 시퀀스 에서 아래 표 시 된 요 소 를 지정 합 니 다 < @ function 1 param 0 param 1... / > 함수 function 1 < @ macro 0 param 0 param 1 호출;nest_param0 nest_param1 ...> nest_body <  /@macro  > 매크로 를 호출 하고 매크로 의 내장 < \ # assign var = value > 를 처리 합 니 다. 변 수 를 정의 하고 초기 화 < \ # local var = value > 매크로 나 function 에서 부분 변 수 를 정의 하고 초기 화 합 니 다. < \ # global var = value > 전역 변 수 를 정의 하고 ${var} 초기 화 표현 식 값 으로 출력 하고 바 꿉 니 다 < \ # visit xmlnode > macro 를 호출 하여 xmlnode 자체 와 그 하위 노드 < \ # recurse xmlnode > 와 일치 합 니 다. 매크로 가 xmlnode 와 일치 하 는 하위 노드 를 호출 합 니 다. <#if condition >  <#list SequenceVar as variable > repeatThis  < \ # include "/ copyright footer. html" > 하나의 ftl 표 시 는 다른 ftl 태그 에 넣 을 수 없 지만 주석 표 시 는 ftl 태그 에 넣 을 수 있 습 니 다.시스템 미리 정 의 된 명령 은 < \ #... > < / # > 사용자 정의 명령 은 < @... > < / @ > hash 세 션 을 사용 할 수 있 습 니 다. products[10..19] or products[5..] 격식시퀀스 도 덧셈 계산 할 수 있 습 니 다: passwords + {"joe": "secret 42"}
부족 값: name!"unknown" 혹은 (user.name)!"unknown" 혹은 name! 혹은 (user.name)!
null 값 검사: name?? or (user.name)??전의 목록:
Escape sequence
Meaning
\ "(글 출처 www. iocblog. net)
Quotation mark (u0022)
\'
Apostrophe (a.k.a. apostrophe-quote) (u0027)
\\
Back slash (u005C)
Line feed (u000A)
\r
Carriage return (u000D)
\t
Horizontal tabulation (a.k.a. tab) (u0009)
\b
Backspace (u0008)
\f
Form feed (u000C)
\l
Less-than sign: <
\g
Greater-than sign: >
\a
Ampersand: &
\{
Curly bracket: {
\xCode
Character given with its hexadecimal  Unicode  code ( UCS  code)
${를 인쇄 하려 면 {의 미 를 바 꿔 야 합 니 다. "$\ {user}" 이 라 고 쓰 거나 생 문자 (r 명령): $(r "${xx}"} 시퀀스 로 구성 할 수 있 습 니 다. < \ # list 
["winter", "spring", "summer", "autumn"]
 as x > ${x} < / \ # list > 다른 대상 은 하나의 시퀀스 에 저장 할 수 있 습 니 다. 예 를 들 어:
[2 + 2, [1, 2, 3, 4], "whatnot"]
첫 번 째 는 숫자 이 고, 두 번 째 는 시퀀스 이 며, 세 번 째 는 문자열 입 니 다. start. end 방식 으로 하나의 숫자 시퀀스 를 정의 할 수 있 습 니 다. start 는 end 보다 작 을 수 있 으 며, end 도 생략 할 수 있 습 니 다. hash 수치 추출 은 네 가지 모드 를 지원 합 니 다.
book.author.name

book["author"].name

book.author.["name"]
,
book["author"]["name"]
.
특수 변 수 는 freemaker 엔진 자체 가 정의 하 는 변 수 를 말 합 니 다. 접근 할 때. variable name 의 문법 으로 접근 합 니 다. 변수 표현 식 은 내장 모드 를 지원 합 니 다. 예 를 들 어 ${"Hello ${user}!"}. 변수 표현 식 은 명령 에서 사용 할 수 있 습 니 다. 변수 표현 식 은 명령 에서 "" "로 존재 할 수 있 습 니 다. < \ # include" / footer / ${copany}. html "> 보다 못 합 니 다. 그러나 아래 의 방식 이 존재 하 는 것 을 허락 하지 않 습 니 다. <#if ${isBig}>Wow!, 정확 한 표기 법 은 < \ # if isBig > Wow! < / \ # if > 입 니 다. 게다가 <#if "${isBig}" > Wow! < / \ # if > 쓰기 도 올 바 르 지 않 습 니 다. "${isBig}" 은 boolean 형식 이 아 닌 문자열 을 되 돌려 주기 때 문 입 니 다. 문자열 에서 문자 나 문자열 은 다음 문법 을 사용 합 니 다: ${user [0]}, ${user [0. 2]} ${user [4.]}, ${user? string (4)} 시퀀스 작업:   덧셈: < \ # list ["Joe", "Fred"] + ["Julia", "Kate"] as user > 하지만 직렬 연결 후 읽 기 속도 가 느 려 지 는 것 에 주의해 야 합 니 다.   하위 시퀀스: seq [1. 4]시퀀스 와 hash 의 직렬 연결 은 두 개의 더하기 에 만 사용 할 수 있 습 니 다. 여러 개의 더하기 모드 가 있 을 수 없습니다. hash 를 더 하면 두 개의 추 가 된 hash 가 같은 key 가 존재 하면 그 뒤에 앞 을 덮어 씁 니 다. > = 또는 > 를 사용 할 때 몇 가지 문 제 를 주의해 야 합 니 다. freemaker 는 > 를 태그 의 닫 힌 문자 로 해석 하기 때문에 이 문 제 를 해결 하기 위해 서 는 표현 식 에 괄호 를 붙 여야 합 니 다. 예 를 들 어: <#if (x > y)>. 또는 사용 > and < 기호 로 대체 합 니 다. 값 없 는 변수 (이 변수, null, void, 속성 없 음 등 포함): unsafe expr! default expr or unsafe_expr! or(unsafe_expr)!default_expr or (unsafe expr)! 결 성 된 값 은 모든 유형 일 수 있 습 니 다. 꼭 숫자 가 아 닙 니 다. 예 를 들 어 hits! 0 혹은 colors!["red", "green", "blue"]. 결 성 된 값 을 무시 하면 기본적으로 빈 문자열, 빈 시퀀스 또는 빈 hash 입 니 다. freemarker 는 여러 종류의 값 을 지원 하기 때 문 입 니 다. 그러나 기본 값 을 0 또는 false 로 하려 면 결 성 된 값 을 생략 할 수 없습니다. 최상 위 변수의 무 값 처리:   produt. color! "red": produt 만 비어 있 지 않 고 color 는 비어 있 는 결 성 값 으로 처리 합 니 다. produt 이 비어 있 으 면 freemaker 는 이상 을 던 집 니 다. (produt. color)! "red": produt 이 비어 있 거나 color 속성 이 없 는 값 없 는 상황 을 처리 합 니 다. 값 없 는 변수의 판단 작업: unsafe expr?? or (unsafe_expr)??
변수 가 값 이 없 는 지 판단 합 니 다. 일반 변수 삽입 방식: 
${expression},${3+5);
디지털 변수 삽입 방식: 
#{expression}
 or 
#{expression; format}: 만 료 되 었 습 니 다. 변 수 는 텍스트 영역 이나 문자열 에 만 사용 할 수 있 습 니 다. 예 를 들 어 < h1 > Hello ${name}! < / h1 > 및 <#include "/ footer / ${company}. html" > 디지털 값 삽입: 결 성 된 number format 출력 과 setting 을 통 해 디지털 형식 을 설정 하 는 목적 을 달성 할 수 있 으 며, 내 장 된 함수 string 을 통 해 출력 형식 을 변경 할 수 있 습 니 다. 날짜 형식의 형식 설정: date format, time_format 화해시키다 datetime format 정의 매크로:   인자 없 음: < \ # macro 매크로 이름 >... < / \ # macro >, 참조 < @ 매크로 이름 / >   매개 변수: < \ # macro 매크로 이름 매개 변수... >... < / \ # macro >, 참조 < @ 매크로 이름 매개 변수 1 = 값 1... / >, 매개 변수 가 있 는 매크로, 호출 은 매개 변수의 개수 와 같 아야 합 니 다. 물론 매크로 정의 시 매개 변수 에 기본 값 을 줄 수도 있 습 니 다. 예 를 들 어 < \ # macro greet person color = "black" > 매크로 에 포 함 된 내용: < \ # macro border >  < tr > < td > (글 출처 www. iocblog. net)    <#nested> 
 매크로 정의 body 에 < \ # nested > 명령 을 추가 합 니 다. 포 함 된 내용 은 올 바른 ftl 블록 일 수 있 습 니 다. 매크로 의 로 컬 변 수 는 포 함 된 내용 에서 볼 수 없습니다. 매크로 정의 시 < \ # nest > 명령 은 정 의 된 내용 을 호출 하 는 것 과 같 습 니 다. 매크로 를 사용 할 때 nest body 는 정의 에 해당 합 니 다.
<#macro repeat count>
  <#list 1..count as x>
    <#nested x, x/2, x==count>
  </#list>
</#macro>
<@repeat count=4 ; c, halfc, last>
  ${c}. ${halfc}<#if last> Last!</#if>
</@repeat> 
정의 변수:   템 플 릿 에 정 의 된 변 수 는 데이터 모델 루트 아래 의 같은 이름 의 변 수 를 숨 깁 니 다. 템 플 릿 의 3 가지 형식 변 수 는:   1: plain variables 는 템 플 릿 의 어느 곳 에서 든 접근 할 수 있 습 니 다. 템 플 릿 include 의 다른 템 플 릿 도 포함 되 어 있 는 변 수 를 방문 할 수 있 습 니 다. assign 이나 macro 명령 을 통 해 변 수 를 만 들 거나 교체 할 수 있 습 니 다.   데이터 모델 의 변 수 를 방문 하려 면 'global' 을 통 해 접근 할 수 있 습 니 다.   <#assign user = "Joe Hider">   ${user}          <#-- prints: Joe Hider -->   ${.globals.user} <#-- prints: Big Joe-->    2: Local variables, 매크로 정의 body 에서 local 명령 으로 만 들 거나 교체 합 니 다.   3: Loop variables: list 명령 으로 생 성 됩 니 다. namespaces: < \ # import "/ lib / my test. ftl" as my> <#-- the hash called "my" will be the "gate" --><@my.copyright date="1999-2002"/>${my.mail} 네 임 스페이스 의 변 수 를 설정 합 니 다: < \ # assign mail = "[email protected]" in my > 네 임 스페이스 와 데이터 모델: 네 임 스페이스 의 ftl 은 데이터 모델 의 변 수 를 방문 할 수 있 습 니 다. 같은 네 임 스페이스 의 변 수 는 데이터 모델 의 같은 이름 의 변 수 를 숨 깁 니 다. 공백 문제: 1: White - space stripping, 기본 값 은 enabled 이 며, ftl 태그 가 가 져 온 공백 과 들 여 쓰기 를 제거 합 니 다. 템 플 릿 의 공백 을 처리 합 니 다. 2: t, rt, lt 명령. 3: ftl 의 인자 strip text. compress directive 또는 transform 으로 출력 을 처리 합 니 다. < \ # compress >... < / \ # compress >: 공백 줄 을 제거 합 니 다. < @ compress single line = true >... /@compress 출력 을 한 줄 로 압축 합 니 다. 문법 을 바 꿀 수 있 습 니 다. freemarker 는 "[" 대체 "를 사용 할 수 있 습 니 다. 템 플 릿 의 파일 시작 에 [\ # ftl] 을 추가 합 니 다.

좋은 웹페이지 즐겨찾기