FreeMarker常用语法学习

1.API网址

http://freemarker.sourceforge.net/docs/

2.一个Table的例子

[html] view plaincopy

  1. freemarker 对表格的控制
  2. 这里将所有需要在一个区域显示到数据全部add到一个叫做zbj的list中了
  3. <#assign a2=zbj> -->将list zbj赋值给a2,这里也应该判空的...
  4. <#if zbj?exists>
  5. <#list 0..zbj?size-1 as a1>    -->从0--->zbj?size-1循环,此时可以将数据全部循环一边
  6. <#if a1%(4*ldList?size)==0> <tr></#if> -->模板语言支持运算符操作在这里用到了取余判断并写<tr>
  7. <td height="23"><input type="text" size="7" id="input1" value=${a2[a1]} name="alldata"/></td> -->写数据
  8. </#list>
  9. </#if>
  10. freemarker有一个内置函数叫做chunk,没有试出来,才做了这样的处理,应该chunk更能方便到将数据制作成需要到格子吧....

3.常用语法

[html] view plaincopy

  1. =======常用语法==========
  2. 三.
  3. EG.一个对象BOOK
  4. 1.输出 ${book.name}
  5. 空值判断:${book.name?if_exists },
  6. ${book.name?default(‘xxx’)}//默认值xxx
  7. ${ book.name!"xxx"}//默认值xxx
  8. 日期格式:${book.date?string(‘yyyy-MM-dd‘)}
  9. 数字格式:${book?string.number}--20
  10. ${book?string.currency}--<#-- $20.00 -->
  11. ${book?string.percent}—<#-- 20% -->
  12. 插入布尔值:
  13. <#assign foo=ture />
  14. ${foo?string("yes","no")} <#-- yes -->
  15. =============逻辑判断===========
  16. 2.
  17. a:
  18. <#if condition>...
  19. <#elseif condit
  20. inc 发布于2007-09-08 16:18:57
  21. ion2>...
  22. <#elseif condition3>......
  23. <#else>...
  24. 其中空值判断可以写成<#if book.name?? >
  25. </#if>
  26. b:
  27. <#switch value>
  28. <#case refValue1>
  29. ...
  30. <#break>
  31. <#case refValue2>
  32. ...
  33. <#break>
  34. ...
  35. <#case refValueN>
  36. ...
  37. <#break>
  38. <#default>
  39. ...
  40. </#switch>
  41. ========循环读取==========
  42. 3.
  43. <#list sequence as item>
  44. ...
  45. </#list>
  46. 空值判断<#if bookList?size = 0></#list>
  47. e.g.
  48. <#list employees as e>
  49. ${e_index}. ${e.name}
  50. </#list>
  51. <#if mole?default(0)!=0>
  52. =============用来压缩空白空间和空白的行========
  53. 用例
  54. <#assign x = " moo ">
  55. (<#compress>
  56. 1 2 3 4 5
  57. ${moo}
  58. test only
  59. I said, test only
  60. )
  61. 输出
  62. (1 2 3 4 5
  63. moo
  64. test only
  65. I said, test only)
  66. =======Sequence内置的计数器=======
  67. 3. Sequence内置的计数器: xxx_index
  68. 用途:显示序号
  69. 模板:
  70. <#list employees as e>
  71. ${e_index}. ${e.name}
  72. </#list>
  73. 输出:
  74. 1. Readonly
  75. 2. Robbin
  76. =======Sequence内置的分段器==============
  77. 4. Sequence内置的分段器: chunk
  78. 用途:某些比较BT的排版需求
  79. 模板:
  80. <#assign seq = [‘a‘, ‘b‘, ‘c‘, ‘d‘, ‘e‘, ‘f‘, ‘g‘, ‘h‘, ‘i‘, ‘j‘]>
  81. <#list seq?chunk(4) as row>
  82. <ul>
  83. <li><#list row as cell>${cell} </#list></li>
  84. </ul>
  85. </#list>
  86. <#list seq?chunk(4, ‘-‘) as row>
  87. <tr>
  88. <td><#list row as cell>${cell} </#list></td>
  89. </tr>
  90. </#list>
  91. 输出:
  92. <ul>
  93. <li>a</li>
  94. <li>b</li>
  95. <li>c</li>
  96. <li>d</li>
  97. </ul>
  98. <ul>
  99. <li>e</li>
  100. <li>f</li>
  101. <li>g</li>
  102. <li>h</li>
  103. </ul>
  104. <ul>
  105. <li>i</li>
  106. <li>j</li>
  107. </ul>
  108. <tr>
  109. <td>a</td>
  110. <td>b</td>
  111. <td>c</td>
  112. <td>d</td>
  113. </tr>
  114. <tr>
  115. <td>e</td>
  116. <td>f</td>
  117. <td>g</td>
  118. <td>h</td>
  119. </tr>
  120. <tr>
  121. <td>i</td>
  122. <td>j</td>
  123. <td>-</td>
  124. <td>-</td>
  125. </tr>
  126. ==========.设置缺省格式指令setting ============
  127. <#setting number_format = "#"/>
  128. ${1.234}
  129. 输出1
  130. <#setting number_format="0.##">
  131. ${1.234}
  132. 输出
  133. 1.23
  134. ==========包含文件指令 include ============
  135. <#include "header.htm"/>
  136. ==========导入macros指令 import =======
  137. <#import "../macros/pagination.ftl" as pagination>
  138. ==========freemarker的list============
  139. Scalar String:${scalarString}
  140. Scalar Number:${scalarNumber}
  141. Object is:${scalarObject}
  142. List使用样例-List元素为Scalar对象:
  143. <#list scalarList as value0>
  144. Scalar List值:${value0}
  145. </#list>
  146. List使用样例-List元素为User对象:
  147. <#list userList as listUser>
  148. List对象User Id值:${listUser.userId}
  149. </#list>
  150. Map使用样例-Map Values元素为Scalar :
  151. <#list scalarMap?keys as mykey>
  152. Scalar Map key is :${mykey}
  153. Scalar Map value is:${scalarMap[mykey]}
  154. </#list>
  155. Map使用样例-Map Values元素为User对象:
  156. <#list userMap?keys as key1>
  157. <#assign mapUser="${userMap[key1]}" >
  158. User Object is :${mapUser}
  159. <#--
  160. 以下方法有问题
  161. User is :${mapUser.userId} <br>
  162. -->
  163. </#list>
  164. =======FreeMarker中list排序=======
  165. 升序:
  166. <#list list?sort_by("time") as v>
  167. </#list>
  168. 降序:
  169. <#list list?sort_by("time") as v>
  170. </#list>
  171. ========freemarker在模板中定义变量=======
  172. 在模板中定义的变量有三种类型:
  173. plain变量:可以在模板的任何地方访问,包括include指令插入的模板,使用assign指令创建和替换
  174. <#include "/WEB-INF/index/top.html">
  175. =======freemarker.properties配置=========
  176. (1)解决输出中文乱码问题:
  177. default_encoding=UTF-8
  178. locale=zh_CN
  179. number_format=#
  180. (2)提高freemarker的性能
  181. template_update_delay=60000
  182. (3)freemarker的标签种类:
  183. ${..}
  184. # 代表是FTL tags
  185. <#if ...></#if>
  186. <#list totalList as elementObject>...</#list>
  187. @ ,代表用户自定义的标签
  188. <#-- --> 注释标签,注意不是<!-- -->
  189. ==============将图片整除换行====== <#if (u_index+1)%4=0>当图片超过五个就换行=======
  190. <table width="100%">
  191. <tr>
  192. <td><table width="100%">
  193. <tr>
  194. <#if map["最新-图片"]?exists>
  195. <#list map["最新-图片"] as u>
  196. <#if (u_index+1)%4=0>
  197. <td><table width="70" height="65" border="0" cellpadding="0" cellspacing="0">
  198. <tr>
  199. <td align="center" valign="middle" bgcolor="#6F7074">
  200. <a target="_blank" href="shownews.page?id=${u.id?default("")}&mole=2 "><img src="${u.chartpath?default(‘‘)}" width="67" height="41" border="0" /></a></td>
  201. </tr>
  202. <tr>
  203. <td align="center" bgcolor="#6F7074">
  204. <a target="_blank" href="shownews.page?id=${u.id?default("")}&mole=2 " class="tableff">
  205. <@jf.greet title=u.title len=4 /></a>
  206. </td>
  207. </tr>
  208. </table></td></tr><tr >
  209. <#else>
  210. <td><table width="70" height="65" border="0" cellpadding="0" cellspacing="0">
  211. <tr>
  212. <td align="center" valign="middle" bgcolor="#6F7074">
  213. <a target="_blank" href="shownews.page?id=${u.id?default("")}&mole=2 "><img src="${u.chartpath?default(‘‘)}" width="67" height="41" border="0" /></a></td>
  214. </tr>
  215. <tr>
  216. <td align="center" bgcolor="#6F7074">
  217. <a target="_blank" href="shownews.page?id=${u.id?default("")}&mole=2 " class="tableff">
  218. <@jf.greet title=u.title len=4 /></a>
  219. </td>
  220. </tr>
  221. </table></td>
  222. </#if>
  223. </#list>
  224. </#if>
  225. </tr>
  226. </table>
  227. </td>
  228. </tr>
  229. </table>
  230. </tr>
  231. </table></td>
  232. </#if>
  233. </#list>
  234. </#if>
  235. </tr>
  236. </table>
  237. </td>
  238. </tr>
  239. </table>
  240. =================freemarker中在application
  241. ${Application.web_title}
  242. 在类里:
  243. list=dser.indexvideo(cvo);
  244. if(list.size()!=0){
  245. map.put("最新",list);}
  246. 在html静态页里:
  247. <#import "/WEB-INF/ftl/index.ftl" as jf>
  248. (index.ftl
  249. <#macro greet title len>
  250. <#if title?length != 0>
  251. <#if (title?length>len)>
  252. ${title[0..len-1]} <#else>
  253. ${title?trim}
  254. </#if>
  255. <#else>
  256. ${title?default("")}
  257. </#if>
  258. </#macro>
  259. <#--时间比较-->
  260. <#macro vstime start end>
  261. <#if start?default("")==""||end?default("")=="">
  262. --
  263. <#else>
  264. <#assign starts=start?replace("-","") >
  265. <#assign ends=end?replace("-","") >
  266. <#if (starts?number>ends?number)>
  267. <font color="red">以过期</font>
  268. <#else>
  269. 未过期
  270. </#if>
  271. </#if>
  272. </#macro>
  273. <#if map["最新"]?exists>
  274. <#list map["最新"] as u>
  275. ${u.filepath?default(‘‘)}
  276. <@jf.greet title=u.title len=6 />
  277. </#list></#if>
时间: 2024-07-30 22:21:16

FreeMarker常用语法学习的相关文章

FreeMarker常用语法

转自:http://www.cnblogs.com/linjiqin/p/3388298.html FreeMarker的插值有如下两种类型:1,通用插值${expr};2,数字格式化插值:#{expr}或#{expr;format} ${book.name?if_exists } //用于判断如果存在,就输出这个值 ${book.name?default(‘xxx’)}//默认值xxx ${book.name!"xxx"}//默认值xxx ${book.date?string('yy

ePx Studio 7.2 常用语法学习真实经典案例

1. 使用控件属性作为判断条件: 1 …… 2 if RadioButton2.Checked then 3 begin 4 Statement := this.Replace( Statement,'varchar','varchar2' ); 5 Statement := this.Replace( Statement,'int','number' ); 6 end; 7 …… 2. 使用控件 Items 集合数量控制循环次数,同时循环与判断相嵌套: 1 …… 2 CheckCount :=

MySql常用语法(持续学习更新)

Mysql常用语法: 1.使用Mysql: (1)了解数据库和表: SHOW databases; 分析:返回可用数据库的一个列表. SHOW tables; 分析:返回当前选择书库中的表. (2)选择数据库: USE databases; 分析:USE并不返回任何结果. 2.检索: (1)检索单个列: SELECT prod_name FROM products;    分析:该语句利用SELECT语句从products表中检索一个名为prod_name的列 原文地址:https://www.

python之路,Day24 常用设计模式学习

python之路,Day24 常用设计模式学习 本节内容 设计模式介绍 设计模式分类 设计模式6大原则 1.设计模式介绍 设计模式(Design Patterns) --可复用面向对象软件的基础 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了可重用代码.让代码更容易被他人理解.保证代码可靠性. 毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化,设计模式是软件工程的基石,如同大厦的一块块砖石一

Day5 - Python基础5 常用模块学习

Python 之路 Day5 - 常用模块学习 本节大纲: 模块介绍 time &datetime模块 random os sys shutil json & picle shelve xml处理 yaml处理 configparser hashlib subprocess logging模块 re正则表达式 模块,用一砣代码实现了某个功能的代码集合. 类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合.而对于一个复杂的功能来,

Python之路,Day21 - 常用算法学习

Python之路,Day21 - 常用算法学习 本节内容 算法定义 时间复杂度 空间复杂度 常用算法实例 1.算法定义 算法(Algorithm)是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制.也就是说,能够对一定规范的输入,在有限时间内获得所要求的输出.如果一个算法有缺陷,或不适合于某个问题,执行这个算法将不会解决这个问题.不同的算法可能用不同的时间.空间或效率来完成同样的任务.一个算法的优劣可以用空间复杂度与时间复杂度来衡量. 一个算

(转) Git版本控制软件结合GitHub从入门到精通常用命令学习手册

转载自:爱分享 » Git版本控制软件结合GitHub从入门到精通常用命令学习手册 原文传送门: http://www.ihref.com/read-16369.html 注意: 学习前请先配置好Git客户端 相关文章:Git客户端图文详解如何安装配置GitHub操作流程攻略 官方中文手册:http://git-scm.com/book/zh GIT 学习手册简介 本站为 Git 学习参考手册.目的是为学习与记忆 Git 使用中最重要.最普遍的命令提供快速翻阅. 这些命令以你可能需要的操作类型划

ES6常用语法

ECMAScript 6(以下简称ES6)是JavaScript语言的下一代标准.因为当前版本的ES6是在2015年发布的,所以又称ECMAScript 2015. 也就是说,ES6就是ES2015. 虽然目前并不是所有浏览器都能兼容ES6全部特性,但越来越多的程序员在实际项目当中已经开始使用ES6了.所以就算你现在不打算使用ES6,但为了看懂别人的你也该懂点ES6的语法了... 在我们正式讲解ES6语法之前,我们得先了解下Babel. Babel Babel是一个广泛使用的ES6转码器,可以将

sql 常用语法汇总

Sql常用语法 SQL分类: DDL—数据定义语言(CREATE,ALTER,DROP,DECLARE) DML—数据操纵语言(SELECT,DELETE,UPDATE,INSERT) DCL—数据控制语言(GRANT,REVOKE,COMMIT,ROLLBACK) 首先,简要介绍基础语句: 1.说明:创建数据库 CREATE DATABASE database-name 2.说明:删除数据库 drop database dbname 3.说明:备份sql server --- 创建 备份数据的