freemarker笔记

  1. 1.freemarker中Request,Session的用法:
  2. java块:request.getSession().setAttribute("qq","http://www.qq.com");
  3. request.setAttribute("qq","http://www.qq.com");
  4. freemarker代码:
  5. <#ifSession["qq"]?exists>//Request的用法同session
  6. <#ifSession["qq"]=="http://www.qq.com">
  7. <#else>
  8. </#if>
  9. <#else>
  10. </#if>
  11. 而通常情况下,Request和Session均可省去不写:
  12. <#ifqq?exists>//Request的用法同session
  13. <#ifqq=="http://www.qq.com">
  14. <#else>
  15. </#if>
  16. <#else>
  17. </#if>
  18. 但是如果他们都设有相同的key值,那么在页面中显示的话,就就应该把他们加上去。
  19. 2.freemarker中导入样式表的写法,已经javascript的写法注意:
  20. 引入样式表:<LINKhref="*.css"type=text/cssrel=stylesheet>
  21. 添加样式表:
  22. <styletype="text/css">
  23. .imgsimg{width:150px;height:70px;}
  24. </style>
  25. javascript块:
  26. <scriptlanguage="JavaScript">
  27. functionmethod(para){
  28. }
  29. </script>
  30. 3.判断集合:
  31. 集合的集合:
  32. <#ifvoteWraperObj.itemList?sizegt0>
  33. <#listvoteWraperObj.itemListasvoteList>
  34. </#list></#if>
  35. 对象的集合:
  36. <#ifsoftDetail?sizegt0>
  37. <#listsoftDetailassoftlist>
  38. </#list>
  39. </#if>
  40. 关于Session中存放的对象的属性的读取:
  41. <#ifSession["userweb"].member?exists>
  42. 4.switch/case的用法:
  43. <#switchtype>
  44. <#case"down">
  45. <#include"softdown.ftl">
  46. <#break>
  47. <#case"photo">
  48. <#ifpara=="photoSquare">
  49. <#include"photo.ftl">
  50. <#elseifpara=="photoWidth">
  51. <#include"photo.ftl">
  52. <#else>
  53. </#if>
  54. <#break>
  55. </#switch>
  56. 5.时间类型在页面是如何才能正常显示的:
  57. 如:${newslist.pubTime?string('yyyy-MM-dd')}
  58. ${newslist.pubTime?string("yyyy-MM-ddHH:mm:ss")}
  59. 6.判断存在与否,以及是否有效:
  60. 如:<#ifgoodslist.f_goods_url?exists&&goodslist.f_goods_url?lengthgt0>
  61. 7.“default”是如何使用的:
  62. 如:${qq?default("http://www.qq.com")}
  63. 即如果属性qq不存在,那么就是要default中的值替代。
  64. 8.<#assign>的用法:
  65. <#assigncount=0>
  66. <#assignstr="12345">
  67. <#list0..9asi>
  68. <#assigncount=count+1>
  69. <#ifigtstr?length>
  70. ${count}
  71. </#if>
  72. </#list>
  73. 输出为:78910
  74. 9.freemarker中如何截取字符串:
  75. 方法1:?substring(,)||方法2:[,]
  76. 区别:前者包头不包未,后者包头又包未:
  77. 实例:<#assigncount=0>
  78. <#assignstr="12345">
  79. ${str[count..count+1]}
  80. ${str?substring(count,count+1)}
  81. 输出为:12,1
  82. <#assigncount=0>
  83. <#assignstr="12345">
  84. ${str[count..count]}<br/>
  85. ${str?substring(count,count+1)}
  86. 这时输出均为:1
  87. 10.freemarker页面中如果包含
  88. <#assignhtml=JspTaglibs["/WEB-INF/struts-html.tld"]>
  89. <@html.base/>
  90. 那么它所指向的路径都是相当路径(相对于当前文件)。
  91. 11.如何让freemarker模板当html来使用呢:(完整的页面如下)
  92. <html>
  93. <head>
  94. <#assignhtml=JspTaglibs["/WEB-INF/struts-html.tld"]>
  95. <#assignbean=JspTaglibs["/WEB-INF/struts-bean.tld"]>
  96. <#assignlogic=JspTaglibs["/WEB-INF/struts-logic.tld"]>
  97. <@html.base/>
  98. <linkhref="css/main.css"rel="stylesheet"type="text/css"/>
  99. <metahttp-equiv="content-type"content="text/html;charset="utf-8">
  100. </head>
  101. <body>
  102. ---------freemarker代码块
  103. </body>
  104. </html>
  105. 12.?使用内建的int(后面讲述)获得整数部分
  106. 如${1.1?int}=1
  107. 13.比较操作符:
  108. 1使用=(或==,完全相等)测试两个值是否相等,使用!=测试两个值是否不相等。
  109. 2.对数字和日期可以使用<、<=、>和>=,但不能用于字符串
  110. 3.由于Freemarker会将>解释成FTL标记的结束字符,所以对于>和>=可以使用括号来避免这种情况,例如<#if(x>y)>,另一种替代的方法是,使用lt、lte、gt和gte来替代<、<=、>和>=
  111. 14.内建函数:
  112. html:对字符串进行HTML编码
  113. cap_first:使字符串第一个字母大写
  114. ??lower_case:将字符串转换成小写
  115. ??upper_case:将字符串转换成大写
  116. trim:去掉字符串前后的空白字符
  117. ??size:获得序列中元素的数目
  118. int:取得数字的整数部分(如-1.9?int的结果是-1)
  119. 15.根据缺省格式(由#setting指令设置)将表达式结果转换成文本输出;可以使用内建函数string格式化单个Interpolation
  120. 如:<#settingnumber_format="currency"/>
  121. <#assignanswer=42/>
  122. 输出结果是:$42.00
  123. 单个Interpolation:
  124. ${answer?string.number}
  125. ${answer?string.currency}
  126. ${answer?string.percent}?
  127. 16.插入日期值:根据缺省格式(由#setting指令设置)将表达式结果转换成文本输出;可以使用内建函数string格式化单个Interpolation
  128. 如:${lastUpdated?string("yyyy-MM-ddHH:mm:sszzzz")}
  129. 17.Session中设置对象属性的判断:
  130. Session["userweb"].member?exists
  131. 18.插入布尔值:根据缺省格式(由#setting指令设置)将表达式结果转换成文本输出;可以使用内建函数string格式化单个Interpolation.
  132. 如:<#assignor=true/>
  133. ${or?string("Youareright!","Youarewrong!")}
  134. 输出为:Youareright!
  135. 19.数字Interpolation的#{expr;format}形式可以用来格式化数字,format可以是:
  136. ?mX:小数部分最小X位
  137. ?MX:小数部分最大X位
  138. 如:<#assignx=2.582/>
  139. <#assigny=4/>
  140. #{x;M2}<#--2.58-->
  141. #{y;M2}<#--4-->
  142. #{x;m1}<#--2.6-->
  143. #{y;m1}<#--4.0-->
  144. #{x;m1M2}<#--2.58-->
  145. #{y;m1M2}<#--4.0-->
  146. 20.用户定义指令:宏
  147. <#macrogreetperson>
  148. <fontsize="+2">Hello${person}!</font>
  149. </#macro>
  150. 作为用户定义指令使用宏变量时,使用@替代FTL标记中的#
  151. <@greetperson="Fred"/>and<@greetperson="Batman"/>
  152. 输出为:HelloFred!andHelloBatman!
  153. 21:宏可以有多参数:
  154. <#macrogreetpersoncolor>
  155. <fontsize="+2"color="${color}">Hello${person}!</font>
  156. </#macro
  157. 可以这样使用该宏变量:
  158. <@greetperson="Fred"color="black"/>,其中参数的次序是无关的,只能使用在macro指令中定义的参数,并且对所有参数赋值,所以下面的代码是错误的:
  159. 只能使用在macro指令中定义的参数,并且对所有参数赋值,多了或者少了都会出错的,完全赋值。如:<@greetperson="Fred"/>为错。
  160. 可以在定义参数时指定缺省值,
  161. <#macrogreetpersoncolor="black">
  162. <fontsize="+2"color="${color}">Hello${person}!</font>
  163. </#macro>
  164. 这样<@greetperson="Fred"/>就正确了,宏的参数是局部变量,只能在宏定义中有效。
  165. 22.嵌套内容
  166. ?用户定义指令可以有嵌套内容,使用<#nested>指令执行指令开始和结束标记之间的模板片
  167. <#macroborder>
  168. <tableborder=4cellspacing=0cellpadding=4><tr><td>
  169. <#nested>
  170. </tr></td></table>
  171. </#macro>
  172. 这样使用该宏变量:
  173. <@border>Theborderedtext</@border>
  174. 输出结果:
  175. <tableborder=4cellspacing=0cellpadding=4><tr><td>
  176. Theborderedtext
  177. </tr></td></table>
  178. <#ifindexL_has_next>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值