JAVAPMS官方网站 - 国内商用免费的java(jsp)门户网站管理系统|jsp cms,java cms

发布帖子 回复帖子
黑眼圈
黑眼圈
普通会员
javapms新手
  • 发布主题:12
  • 回复帖子:25
  • 获得积分:61
  • 注册日期: 2014-03-25
  • 最后登录: 2015-02-06

FreeMarker语法

  • 浏览:1538
  • 回复:2
#1
发布于:2014-06-09 22:33:34
FreeMarker语法

1 一、常用语法     
2 1、输出 ${book.name}   
3 2、空值判断:${book.name?if_exists }, 
4               ${book.name?default(‘xxx’)}//默认值 有值则输出,没值默认为xxx
5               ${ book.name!"xxx"}//默认值xxx   
6 3、Date日期格式:${book.date?string('yyyy-MM-dd')}
7    String的 日期格式:${book.date?date('yyyy-mm-dd')} 
8    String的 时间格式:${book.date?time('hh-mm-ss')} 
9 4、数字格式:${book?string.number}--20   
10              ${book?string.currency}--<#-- $20.00 --> 
11              ${book?string.percent}—<#-- 20% --> 
12 5、插入布尔值:   
13              <#assign foo=true />  //定义一个变量
14               ${foo?string("yes","no")} <#-- yes --> 
15  
16 二、内置方法   
17 1、数字型   
18           <#assign answer=42/> 
19                ${answer}   
20                ${answer?string}  <#-- the same as $...{answer} --> 
21                ${answer?string.number}   
22                ${answer?string.currency}   
23                ${answer?string.percent}   
24  
25           <#setting number_format="0.###E0"/>   
26                ${12345?string("0.####E0")} 
27                ${answer?string("number")} 等同于:${answer?string.number}   
28 2、日期型:   
29          预定义格式包括:short ,middle和long。   
30                 ${openingTime?string.short}   
31                 ${openingTime?string.medium}   
32                 ${openingTime?string.long}   
33          组合使用:${lastUpdated?string.short_long}   
34                  ${lastUpdated?string("yyyy-MM-dd HH:mm:ss zzzz")}   
35 3、逻辑型   
36           foo?string   
37           foo?string("yes", "no")   
38 4、序列的内置方法:   
39            first   
40            last   
41            seq_contains   
42            ${x?seq_contains("blue")?string("yes", "no")}   
43                 seq_index_of   
44                 seq_last_index_of   
45                  reverse   
46                  size   
47                  sort   
48                   sort_by   
49  多层次的hash排序   
50  <#assign members = [{"name":{"first": "Joe", "last": "Smith"}, "age": 40},   
51                    {"name":{"first": "Fred", "last": "Crooger"}, "age": 35},   
52                   {"name":{"first": "Amanda", "last": "Fox"}, "age": 25}]> 
53           Sorted by name.last:   
54           <#list members?sort_by(['name', 'last']) as m> 
55                  - ${m.name.last}, ${m.name.first}: ${m.age} years old   
56           </#list>   
57  
58    chunk:将一个序列分解成几个序列。   
59           <#assign seq = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j']> 
60                 <#list seq?chunk(4) as row> 
61                       <#list row as cell>${cell} </#list> 
62                 </#list> 
63                 <#list seq?chunk(4, '-') as row> 
64                      <#list row as cell>${cell} </#list> 
65                 </#list> 
66                 chunk经常用于分栏或者表格输出的格式。   
67 5、hash内置方法:   
68                  keys:   
69                  values:   
70 三、序列   
71 由逗号分隔的变量列表,由方括号限定,类似java中的一维数组     
72 <#assign seq = ["winter", "spring", "summer", "autumn"]> 
73          <#list seq as x> 
74                 ${x_index + 1}. ${x}     
75                 <#if x_has_next> 
76           </#list> 
77  
78         输出   
79           1. winter,   
80           2. spring,   
81           3. summer,   
82           4. autumn     
83  
84 四、Hashes(散列)     
85     由逗号分隔的键-值列表,由大括号限定,键和值之间用冒号分隔:       {"name":"green mouse", "price":150},键和值都是表达式,但是键必须是字符串。   
86   <#assign ages = ...{"Joe":23, "Fred":25} + ...{"Joe":30, "Julia":18}> 
87        Joe is $...{ages.Joe}   
88        Fred is $...{ages.Fred}   
89        Julia is $...{ages.Julia}   
90        结果:   
91        Joe is 30   
92        Fred is 25   
93        Julia is 18   
94 五、freemarker的空值和默认值     
95       ${user?if_exists}           
96       ${user?default('your name')}     
97       判断对象是不是null   
98       <#if mouse?exists> 
99          Mouse found   
100      <#else> 
101  
102     或<#if book.name?? >   
103          Mouse found   
104       </#if> 
105     list 空值判断  <#if bookList?size = 0> 
106  
107 六、算术运算   
108 比较操作符-<#if expression>...</#if> 
109 1.)使用=(或==,完全相等)测试两个值是否相等,使用!= 测试两个值是否不相等   
110 2.)=和!=两边必须是相同类型的值,否则会产生错误,例如<#if 1 = "1">会引起错误   
111 3.)Freemarker是精确比较,所以"x"、"x  "和"X"是不相等的   
112 4.)对数字和日期可以使用<、<=、>和>=,但不能用于字符串   
113 5.)由于Freemarker会将>解释成FTL标记的结束字符,所以对于>和>=可以使用括号来避免这种情况,例如<#if (x > y)>,另一种替代的方法是,使用lt、lte、gt和gte来替代<、<=、>和>=   
114  
115 逻辑操作符-&&(and)、||(or)、!(not),只能用于布尔值,否则会产生错误   
116 <#if x < 12 && color = "green"> 
117   We have less than 12 things, and they are green.   
118 </#if> 
119 <#if !hot> <#-- here hot must be a boolean --> 
120   It's not hot.   
121 </#if>     
122  
123 内置函数-用法类似访问hash(散列)的子变量,只是使用"?"替代".",例如:user?upper_case   
124 下面列出常用的一些函数:   
125 对于字符串   
126 html-对字符串进行HTML编码   
127 cap_first-使字符串第一个字母大写   
128 lower_case-将字符串转换成小写   
129 trim-去掉字符串前后的空白字符   
130 对于Sequences(序列)   
131 size-获得序列中元素的数目   
132 对于数字   
133 int-取得数字的整数部分(如-1.9?int的结果是-1)   
134  
135 例一:   
136  
137 <#-- test的值为Tom & Jerry --> 
138   $...{test?html}   
139   $...{test?upper_case?html}   
140 结果:   
141 Tom & Jerry   
142 TOM & JERRY   
143  
144 例二:   
145  
146 <#-- seasons的值为"winter", "spring", "summer", "autumn" -->   
147 $...{seasons?size}   
148 $...{seasons[1]?cap_first} <#-- left side can by any expression --> 
149 $...{"horse"?cap_first}     
150 结果:   
151 4   
152 Spring   
153 Horse     
154  
155 方法的调用   
156 $...{repeat("What", 3)}   
157 $...{repeat(repeat("x", 2), 3) + repeat("What", 4)?upper_case}   
158 结果:   
159 WhatWhatWhat   
160 xxxxxxWHATWHATWHATWHAT   
161  
162 操作符优先顺序   
163 后缀            [subvarName] [subStringRange] . (methodParams)   
164 一元            +expr、-expr、!   
165 内建            ?   
166 乘法            *、 / 、%   
167 加法            +、-   
168 关系            <、>、<=、>=(lt、lte、gt、gte)   
169 相等            =、!=   
170 逻辑            &&   
171 逻辑            ||   
172 数字范围      ..   
173  
174 三.) Interpolation:由$...{...}或#...{...}两种类型,输出计算值,可以定义输出的格式   
175 例一:   
176  
177 <#setting number_format="currency"/> 
178 <#assign answer=42/> 
179 $...{answer}   
180 $...{answer?string}  <#-- the same as $...{answer} --> 
181 $...{answer?string.number}   
182 $...{answer?string.currency}   
183 $...{answer?string.percent}   
184 结果:   
185 $42.00   
186 $42.00   
187 42   
188 $42.00   
189 4,200%   
190  
191 例二:   
192  
193 $...{lastUpdated?string("yyyy-MM-dd HH:mm:ss zzzz")}   
194 $...{lastUpdated?string("EEE, MMM d, ''yy")}   
195 $...{lastUpdated?string("EEEE, MMMM dd, yyyy, hh:mm:ss a '('zzz')'")}     
196 结果:   
197 2003-04-08 21:24:44 Pacific Daylight Time   
198 Tue, Apr 8, '03   
199 Tuesday, April 08, 2003, 09:24:44 PM (PDT)   
200  
201 例三:   
202  
203 <#assign foo=true/> 
204 $...{foo?string("yes", "no")}   
205 结果:   
206 yes   
207  
208 例四:   
209  
210 <#-- x is 2.582 and y is 4 --> 
211 #...{x; M2}   <#-- 2.58 --> 
212 #...{y; M2}   <#-- 4    --> 
213 #...{x; m1}   <#-- 2.6 --> 
214 #...{y; m1}   <#-- 4.0 --> 
215 #...{x; m1M2} <#-- 2.58 --> 
216 #...{y; m1M2} <#-- 4.0  -->     
217 说明:mX-小数部分最小X位;MX-小数部分最大X位。   
218  
219 四.) 注释:<#--和-->   
220  
221 下面是一个常用的模板例子:   
222  
223 <p>We have these animals:   
224 <table border=1> 
225   <tr><th>Name<th>Price   
226   <#list animals as being> 
227   <tr> 
228     <td> 
229       <#if being.size = "large"><b></#if> 
230       $...{being.name}   
231       <#if being.size="large"></b></#if> 
232     <td>$...{being.price} Euros   
233   </#list> 
234  </table>   
235 <#include "/copyright_footer.html"> 
236 注意点:   
237 1.) FreeMarker是区分大小写的;   
238 2.) FTL标记不能位于另一个FTL标记内部,例如:<#if <#include 'foo'>='bar'>...</if>;   
239 3.) $...{…}只能在文本中使用;   
240 4.) 多余的空白字符会在模板输出时去除;   
241 5.) 如果使用的指令不存在,会产生一个错误消息。   
242 <#-- x的值设定为5 --> 
243 $...{x * x - 100}   
244 $...{x / 2}   
245 $...{12 % 10}   
246 结果:   
247 -75   
248 2.5   
249 2   
250  
251 注意: 操作符两边必须是数字;使用"+"时,如果一边是数字,一边是字符串,就会自动将数字转换为字符串。   
252 使用内建的指令int获得整数部分:   
253 $...{(x/2)?int}   
254 $...{1.1?int}   
255 $...{1.999?int}   
256 $...{-1.1?int}   
257 $...{-1.999?int}   
258 结果:   
259 2   
260 1   
261 1   
262 -1   
263 -1 
这家伙很懒,什么话都没留下
淡淡的风
淡淡的风
普通会员
javapms新手
  • 发布主题:0
  • 回复帖子:2
  • 获得积分:2
  • 注册日期: 2016-10-11
  • 最后登录: 2016-10-11
#2
发布于:2016-10-11 16:50:35
引用:
FreeMarker语法

1 一、常用语法     
2 1、输出 ${book.name}   
3 2、空值判断:${book.name?if_exists }, 
4               ${book.name?default(‘xxx’)}//默认值 有值则输出,没值默认为xxx
5               ${ book.name!"xxx"}//默认值xxx   
6 3、Date日期格式:${book.date?string('yyyy-MM-dd')}
7    String的 日期格式:${book.date?date('yyyy-mm-dd')} 
8    String的 时间格式:${book.date?time('hh-mm-ss')} 
9 4、数字格式:${book?string.number}--20   
10              ${book?string.currency}--<#-- $20.00 --> 
11              ${book?string.percent}—<#-- 20% --> 
12 5、插入布尔值:   
13              <#assign foo=true />  //定义一个变量
14               ${foo?string("yes","no")} <#-- yes --> 
15  
16 二、内置方法   
17 1、数字型   
18           <#assign answer=42/> 
19                ${answer}   
20                ${answer?string}  <#-- the same as $...{answer} --> 
21                ${answer?string.number}   
22                ${answer?string.currency}   
23                ${answer?string.percent}   
24  
25           <#setting number_format="0.###E0"/>   
26                ${12345?string("0.####E0")} 
27                ${answer?string("number")} 等同于:${answer?string.number}   
28 2、日期型:   
29          预定义格式包括:short ,middle和long。   
30                 ${openingTime?string.short}   
31                 ${openingTime?string.medium}   
32                 ${openingTime?string.long}   
33          组合使用:${lastUpdated?string.short_long}   
34                  ${lastUpdated?string("yyyy-MM-dd HH:mm:ss zzzz")}   
35 3、逻辑型   
36           foo?string   
37           foo?string("yes", "no")   
38 4、序列的内置方法:   
39            first   
40            last   
41            seq_contains   
42            ${x?seq_contains("blue")?string("yes", "no")}   
43                 seq_index_of   
44                 seq_last_index_of   
45                  reverse   
46                  size   
47                  sort   
48                   sort_by   
49  多层次的hash排序   
50  <#assign members = [{"name":{"first": "Joe", "last": "Smith"}, "age": 40},   
51                    {"name":{"first": "Fred", "last": "Crooger"}, "age": 35},   
52                   {"name":{"first": "Amanda", "last": "Fox"}, "age": 25}]> 
53           Sorted by name.last:   
54           <#list members?sort_by(['name', 'last']) as m> 
55                  - ${m.name.last}, ${m.name.first}: ${m.age} years old   
56           </#list>   
57  
58    chunk:将一个序列分解成几个序列。   
59           <#assign seq = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j']> 
60                 <#list seq?chunk(4) as row> 
61                       <#list row as cell>${cell} </#list> 
62                 </#list> 
63                 <#list seq?chunk(4, '-') as row> 
64                      <#list row as cell>${cell} </#list> 
65                 </#list> 
66                 chunk经常用于分栏或者表格输出的格式。   
67 5、hash内置方法:   
68                  keys:   
69                  values:   
70 三、序列   
71 由逗号分隔的变量列表,由方括号限定,类似java中的一维数组     
72 <#assign seq = ["winter", "spring", "summer", "autumn"]> 
73          <#list seq as x> 
74                 ${x_index + 1}. ${x}     
75                 <#if x_has_next> 
76           </#list> 
77  
78         输出   
79           1. winter,   
80           2. spring,   
81           3. summer,   
82           4. autumn     
83  
84 四、Hashes(散列)     
85     由逗号分隔的键-值列表,由大括号限定,键和值之间用冒号分隔:       {"name":"green mouse", "price":150},键和值都是表达式,但是键必须是字符串。   
86   <#assign ages = ...{"Joe":23, "Fred":25} + ...{"Joe":30, "Julia":18}> 
87        Joe is $...{ages.Joe}   
88        Fred is $...{ages.Fred}   
89        Julia is $...{ages.Julia}   
90        结果:   
91        Joe is 30   
92        Fred is 25   
93        Julia is 18   
94 五、freemarker的空值和默认值     
95       ${user?if_exists}           
96       ${user?default('your name')}     
97       判断对象是不是null   
98       <#if mouse?exists> 
99          Mouse found   
100      <#else> 
101  
102     或<#if book.name?? >   
103          Mouse found   
104       </#if> 
105     list 空值判断  <#if bookList?size = 0> 
106  
107 六、算术运算   
108 比较操作符-<#if expression>...</#if> 
109 1.)使用=(或==,完全相等)测试两个值是否相等,使用!= 测试两个值是否不相等   
110 2.)=和!=两边必须是相同类型的值,否则会产生错误,例如<#if 1 = "1">会引起错误   
111 3.)Freemarker是精确比较,所以"x"、"x  "和"X"是不相等的   
112 4.)对数字和日期可以使用<、<=、>和>=,但不能用于字符串   
113 5.)由于Freemarker会将>解释成FTL标记的结束字符,所以对于>和>=可以使用括号来避免这种情况,例如<#if (x > y)>,另一种替代的方法是,使用lt、lte、gt和gte来替代<、<=、>和>=   
114  
115 逻辑操作符-&&(and)、||(or)、!(not),只能用于布尔值,否则会产生错误   
116 <#if x < 12 && color = "green"> 
117   We have less than 12 things, and they are green.   
118 </#if> 
119 <#if !hot> <#-- here hot must be a boolean --> 
120   It's not hot.   
121 </#if>     
122  
123 内置函数-用法类似访问hash(散列)的子变量,只是使用"?"替代".",例如:user?upper_case   
124 下面列出常用的一些函数:   
125 对于字符串   
126 html-对字符串进行HTML编码   
127 cap_first-使字符串第一个字母大写   
128 lower_case-将字符串转换成小写   
129 trim-去掉字符串前后的空白字符   
130 对于Sequences(序列)   
131 size-获得序列中元素的数目   
132 对于数字   
133 int-取得数字的整数部分(如-1.9?int的结果是-1)   
134  
135 例一:   
136  
137 <#-- test的值为Tom & Jerry --> 
138   $...{test?html}   
139   $...{test?upper_case?html}   
140 结果:   
141 Tom & Jerry   
142 TOM & JERRY   
143  
144 例二:   
145  
146 <#-- seasons的值为"winter", "spring", "summer", "autumn" -->   
147 $...{seasons?size}   
148 $...{seasons[1]?cap_first} <#-- left side can by any expression --> 
149 $...{"horse"?cap_first}     
150 结果:   
151 4   
152 Spring   
153 Horse     
154  
155 方法的调用   
156 $...{repeat("What", 3)}   
157 $...{repeat(repeat("x", 2), 3) + repeat("What", 4)?upper_case}   
158 结果:   
159 WhatWhatWhat   
160 xxxxxxWHATWHATWHATWHAT   
161  
162 操作符优先顺序   
163 后缀            [subvarName] [subStringRange] . (methodParams)   
164 一元            +expr、-expr、!   
165 内建            ?   
166 乘法            *、 / 、%   
167 加法            +、-   
168 关系            <、>、<=、>=(lt、lte、gt、gte)   
169 相等            =、!=   
170 逻辑            &&   
171 逻辑            ||   
172 数字范围      ..   
173  
174 三.) Interpolation:由$...{...}或#...{...}两种类型,输出计算值,可以定义输出的格式   
175 例一:   
176  
177 <#setting number_format="currency"/> 
178 <#assign answer=42/> 
179 $...{answer}   
180 $...{answer?string}  <#-- the same as $...{answer} --> 
181 $...{answer?string.number}   
182 $...{answer?string.currency}   
183 $...{answer?string.percent}   
184 结果:   
185 $42.00   
186 $42.00   
187 42   
188 $42.00   
189 4,200%   
190  
191 例二:   
192  
193 $...{lastUpdated?string("yyyy-MM-dd HH:mm:ss zzzz")}   
194 $...{lastUpdated?string("EEE, MMM d, ''yy")}   
195 $...{lastUpdated?string("EEEE, MMMM dd, yyyy, hh:mm:ss a '('zzz')'")}     
196 结果:   
197 2003-04-08 21:24:44 Pacific Daylight Time   
198 Tue, Apr 8, '03   
199 Tuesday, April 08, 2003, 09:24:44 PM (PDT)   
200  
201 例三:   
202  
203 <#assign foo=true/> 
204 $...{foo?string("yes", "no")}   
205 结果:   
206 yes   
207  
208 例四:   
209  
210 <#-- x is 2.582 and y is 4 --> 
211 #...{x; M2}   <#-- 2.58 --> 
212 #...{y; M2}   <#-- 4    --> 
213 #...{x; m1}   <#-- 2.6 --> 
214 #...{y; m1}   <#-- 4.0 --> 
215 #...{x; m1M2} <#-- 2.58 --> 
216 #...{y; m1M2} <#-- 4.0  -->     
217 说明:mX-小数部分最小X位;MX-小数部分最大X位。   
218  
219 四.) 注释:<#--和-->   
220  
221 下面是一个常用的模板例子:   
222  
223 <p>We have these animals:   
224 <table border=1> 
225   <tr><th>Name<th>Price   
226   <#list animals as being> 
227   <tr> 
228     <td> 
229       <#if being.size = "large"><b></#if> 
230       $...{being.name}   
231       <#if being.size="large"></b></#if> 
232     <td>$...{being.price} Euros   
233   </#list> 
234  </table>   
235 <#include "/copyright_footer.html"> 
236 注意点:   
237 1.) FreeMarker是区分大小写的;   
238 2.) FTL标记不能位于另一个FTL标记内部,例如:<#if <#include 'foo'>='bar'>...</if>;   
239 3.) $...{…}只能在文本中使用;   
240 4.) 多余的空白字符会在模板输出时去除;   
241 5.) 如果使用的指令不存在,会产生一个错误消息。   
242 <#-- x的值设定为5 --> 
243 $...{x * x - 100}   
244 $...{x / 2}   
245 $...{12 % 10}   
246 结果:   
247 -75   
248 2.5   
249 2   
250  
251 注意: 操作符两边必须是数字;使用"+"时,如果一边是数字,一边是字符串,就会自动将数字转换为字符串。   
252 使用内建的指令int获得整数部分:   
253 $...{(x/2)?int}   
254 $...{1.1?int}   
255 $...{1.999?int}   
256 $...{-1.1?int}   
257 $...{-1.999?int}   
258 结果:   
259 2   
260 1   
261 1   
262 -1   
263 -1 
0.0
这家伙很懒,什么话都没留下
wangjinguo
wangjinguo
普通会员
javapms新手
  • 发布主题:0
  • 回复帖子:3
  • 获得积分:3
  • 注册日期: 2018-09-24
  • 最后登录: 2019-05-30
#3
发布于:2019-05-30 14:15:32
好好学习一下,要不看不懂源文件 
这家伙很懒,什么话都没留下
发布帖子 回复帖子

快速回复

匿名网友

匿名网友

您需要登录后才可以回帖,请【登录】【注册】
请遵守国家相关法律和本站规定,禁止发布反动言论及其它不相关广告等内容,一经发现将被屏蔽或封号处理,谢谢合作!