freemark就是一个对静态页面上的标签进行动态解析、填充数据的一个框架。
- 语法(转:http://zhuyuehua.iteye.com/blog/1975251):
1. freemarker获取list的size :
Java
ArrayList<String> list = new ArrayList<String>();
Freemaker
${list?size}
2. list的遍历:
<#list animals as being> <tr> <td>${being.name}${being.price}<td> </tr> </#list>
3. 遍历MAP
<#list map?keys as k> <option value="${k}">${map[k]}</option> </#list>
4.list遍历中的下标序号:
_index是list的一个属性
<#list list as a> ${a_index} </#list>
5.取LIST中第i个元素的值
${list[i]}
嵌套时前面要有括号,如下,将字符串变成list,然后取第i个元素的值
${(str?split(","))[i]}
6. list的嵌套:
<#list jsskList as jsskVO> <#list kcList as kcVO> <#if kcVO.kch=jsskVO.kch> (kcVO里有编号和名称,而jsskVO里只有编号) ${kcVO.kcm} </#if> </#list> </#list>
7. list排序:
升序 .sort_by()
<#list list?sort_by("字段") as x> </#list>
降序 .sort_by()?reverse
<#list list?sort_by("字段")?reverse as x> </#list>
8.item_has_next,size使用:
<#list userList as user> <#if !user_has_next> 共有${userList?size}最后一个用户是:${user.userName} </#if> </#list>
- 实际项目中的用法:
\My-SSH-Blog\WebContent\blog\template\template.ftl
1 <!DOCTYPE HTML> 2 <html lang="zh-CN"> 3 <head> 4 <meta charset="UTF-8"> 5 <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1.0,maximum-scale=1,user-scalable=no"> 6 <title>DX博客</title> 7 <link rel="stylesheet" type="text/css" media="all" href="${contextPath}/style.css" /> 8 <link rel="stylesheet" type="text/css" media="all" href="${contextPath}/style/css/font-awesome.min.css" /> 9 <link href="http://fonts.googleapis.com/css?family=Open+Sans:400,400italic,300italic,300,700,700italic|Open+Sans+Condensed:300,700" rel="stylesheet" type="text/css"> 10 <!--[if IE 7]> 11 <link rel="stylesheet" type="text/css" href="${contextPath}/style/css/font-awesome-ie7.min.css"/> 12 <![endif]--> 13 <!--[if IE 8]> 14 <link rel="stylesheet" type="text/css" href="${contextPath}/style/css/ie8.css" media="all" /> 15 <![endif]--> 16 <!--[if IE 9]> 17 <link rel="stylesheet" type="text/css" href="${contextPath}/style/css/ie9.css" media="all" /> 18 <![endif]--> 19 <script type="text/javascript" src="${contextPath}/style/js/jquery-1.7.2.min.js"></script> 20 <script type="text/javascript" src="${contextPath}/style/js/ddsmoothmenu.js"></script> 21 <script type="text/javascript" src="${contextPath}/style/js/retina.js"></script> 22 <script type="text/javascript" src="${contextPath}/style/js/selectnav.js"></script> 23 <script type="text/javascript" src="${contextPath}/style/js/jquery.backstretch.min.js"></script> 24 <script type="text/javascript"> 25 $.backstretch("${contextPath}/style/images/bg/16.jpg"); 26 </script> 27 </head> 28 <body> 29 <div class="scanlines"></div> 30 31 <div class="header-wrapper opacity"> 32 <div class="header"> 33 <div class="logo"> 34 <a href="${contextPath}"> 35 <h1>DX博客</h1> 36 </a> 37 </div> 38 39 <div id="menu-wrapper"> 40 <div id="menu" class="menu"> 41 <ul id="tiny"> 42 <li class="active"> 43 <a href="${contextPath}">博客</a> 44 <ul> 45 <li><a href="${contextPath}/listArticle.action">所有博文</a></li> 46 </ul> 47 </li> 48 <li> 49 <a href="#" title="进入我的Github">Github</a> 50 </li> 51 <li> 52 <a href="#" title="进入我的CSDN博客">CSDN博客</a> 53 </li> 54 <li> 55 <a href="${contextPath}/commentUI.action" title="给我留言">留言板</a> 56 </li> 57 <li><a href="">Menu</a> 58 <ul> 59 <li><a href="/s/">短网址</a></li> 60 <li><a href="/WorkUpload/">作业提交系统</a></li> 61 </ul> 62 </li> 63 </ul> 64 </div> 65 </div> 66 <div class="clear"></div> 67 </div> 68 </div> 69 70 <div class="wrapper"><!-- 71 <ul class="social"> 72 <li><a class="rss" href="#" title="博客订阅"></a></li> 73 <li><a class="qq" href="#" title="QQ"></a></li> 74 <li><a class="weibo" href="#" title="新浪微博"></a></li> 75 <li><a class="wechat" href="${contextPath}/public/wechat.jsp" title="微信"></a></li> 76 <li><a class="email" href="#" title="邮件"></a></li> 77 <li><a class="phone" href="#" title="手机"></a></li> 78 </ul> 79 <div class="intro">Intro...</div> 80 --> 81 <div class="content box"> 82 <h1 class="title article-title">${title}</h1> 83 <div class="info"> 84 <div><a href="${listCategoryArticle}" title="查看该类型博文"><i class="icon-folder-open-alt"></i>:${categoryName}</a></div> 85 <div><a href=""><i class="icon-user"></i>:${author}</a></div> 86 <div><i class="icon-time"></i>:${time}</div> 87 </div> 88 ${typeString} 89 ${content} 90 ${typeString} 91 <div class="record"> 92 <div> 93 <a id="looked" href=""><i class="icon-eye-open"></i> ${looked} 已阅</a> 94 </div> 95 96 <div> 97 <a id="likes" href="javascript:like('${contextPath}/likeAction.action?artid=${articleId}')"><i class="icon-heart-empty"></i> ${likes} 喜爱</a> 98 </div> 99 <a class="comment-btn" href="javascript:onComment('#')"><i class="icon-comments"></i> 给我留言</a> 100 </div> 101 <div class="last-next"> 102 <div> 103 <a href="${lastArticle.staticUrl}" title="上一篇"> 104 <i class="icon-double-angle-left"></i>${lastArticle.title} 105 </a> 106 </div> 107 <div> 108 <a href="${nextArticle.staticUrl}" title="下一篇"> 109 <i class="icon-double-angle-right"></i>${nextArticle.title} 110 </a> 111 </div> 112 </div> 113 </div> 114 115 <div class="sidebar box"> 116 <div class="sidebox widget"> 117 <h3 class="widget-title">最近更新</h3> 118 <ul class="post-list"> 119 <#list lastArticlesList as la> 120 <li> 121 <div class="meta"> 122 <h5><a href="${contextPath}${la.staticUrl}.html">${la.title}</a></h5> 123 <em>${la.createDate?string("yyyy-MM-dd HH:mm:ss")}</em> 124 </div> 125 </li> 126 </#list> 127 <li class="more"><a href="${contextPath}/listArticle.action">more</a></li> 128 </ul> 129 </div> 130 131 <div class="sidebox widget"> 132 <h3 class="widget-title"><i class="icon-search icon"></i></h3> 133 <form class="searchform" method="post" action="#"> 134 <input type="text" name="key" value="输入关键字搜索博客..." onFocus="this.value=''" onBlur="this.value='输入关键字搜索博客...'"/> 135 </form> 136 </div> 137 138 <div class="sidebox widget"> 139 <h3 class="widget-title categories">分类</h3> 140 <ul class="categories"> 141 <#list categoryList as cl> 142 <li><a href="${contextPath}/listArticle.action?categoryId=${cl.id}">${cl.title}</a></li> 143 </#list> 144 </ul> 145 </div> 146 </div> 147 148 <div class="clear"></div> 149 150 </div> 151 152 <div class="footer-wrapper"> 153 <div id="footer" class="four"> 154 <a href="/s/">短网址</a> 155 <a href="/WorkUpload/">作业提交系统</a> 156 </div> 157 </div> 158 <div class="site-generator-wrapper"> 159 <div class="site-generator"> 160 Copyright ©2017.DX Design by <a href="http://elemisfreebies.com">elemis.</a> All rights reserved. 161 </div> 162 </div> 163 <script type="text/javascript" src="${contextPath}/style/js/scripts.js"></script> 164 <script type="text/javascript"> 165 function onComment(url){ 166 var form = document.createElement('form'); 167 form.action = url; 168 form.method = "post"; 169 form.style.display = "none"; 170 171 var input = document.createElement("input"); 172 input.name = "title"; 173 input.value = "${title}"; 174 form.appendChild(input); 175 176 var input2 = document.createElement("input"); 177 input2.name = "articleId"; 178 input2.value = "${articleId}"; 179 form.appendChild(input2); 180 181 document.body.appendChild(form); 182 form.submit(); 183 } 184 </script> 185 </body> 186 </html>