1. select下拉框的实现
12.ftl
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <#import "/inc/select.ftl" as my/> <@my.select id="address" datas=["北京","天津","上海"]/> <@my.select id="sex" datas=["选择性别","男","女"] value="男"/> <@my.select id="username" datas=users key="id" text="name" headkey="-1" headtext="请选择用户"/> <@my.select id="stu" datas=stus key="no" text="name" headkey="-1" headtext="请选择学生"/> <@my.select id="sex" datas={"0":"男","1":"女"} value="1"/> </body> </html>
select.ftl
<#macro select id datas value="" key="" text="" headkey="" headtext=""> <select id="${id}" name="${id}"> <#if headkey!=""> <option value="${headkey}">${headtext}</option> </#if> <#if datas?is_hash_ex> <#local keys=datas?keys/> <#list keys as key> <#if key==value> <option value="${key}" selected>${datas[key]}</option> <#else> <option value="${key}">${datas[key]}</option> </#if> </#list> <#else> <#list datas as data> <#if key!=""> <#if value==data[key]?string> <option value="${data[key]}" selected>${data[text]}</option> <#else> <option value="${data[key]}">${data[text]}</option> </#if> <#else> <#if value==data> <option value="${data}" selected>${data}</option> <#else> <option value="${data}">${data}</option> </#if> </#if> </#list> </#if> </select> </#macro>
test12
@Test public void test12() { Map<String,Object> root = new HashMap<String,Object>(); List<User> users = Arrays.asList(new User(1,"张三",22), new User(2,"李四",33), new User(3,"王五",44)); root.put("users",users); List<Student> stus = Arrays.asList(new Student("123123", "地点"),new Student("11111","方法")); root.put("stus", stus); fu.print("12.ftl", root); fu.fprint("12.ftl",root,"12.html"); }
输出
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <select id="address" name="address"> <option value="北京">北京</option> <option value="天津">天津</option> <option value="上海">上海</option> </select> <select id="sex" name="sex"> <option value="选择性别">选择性别</option> <option value="男" selected>男</option> <option value="女">女</option> </select> <select id="username" name="username"> <option value="-1">请选择用户</option> <option value="1">张三</option> <option value="2">李四</option> <option value="3">王五</option> </select> <select id="stu" name="stu"> <option value="-1">请选择学生</option> <option value="123123">地点</option> <option value="11111">方法</option> </select> <select id="sex" name="sex"> <option value="0">男</option> <option value="1" selected>女</option> </select> </body> </html>
2. 实现分页
13.ftl
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <#import "/inc/pager.ftl" as my/> <@my.pager url="#" totalPage=150 curPage=14 class="pagers" showPageNum=20/> </body> </html>
pager.ftl
<#macro pager url totalPage curPage=1 class="" showPageNum=15> <#local halfPage=(showPageNum/2)?int/> ${halfPage} <#if (halfPage>=curPage)> <@showPage start=1 end=curPage url=url class=class curPage=curPage/> <@showPage start=curPage+1 end=showPageNum curPage=curPage url=url class=class/> <#else> <@showPage start=curPage-halfPage end=curPage url=url class=class curPage=curPage/> <#if (curPage+halfPage>totalPage)> <#local endPage=totalPage/> <#else> <#local endPage=curPage+halfPage/> </#if> <@showPage start=curPage+1 end=endPage url=url class=class curPage=curPage/> </#if> </#macro> <#macro showPage start end curPage url class> <#list start..end as page> <#if curPage==page> [${page}] <#else> <a href="${url}" class="${class}">${page}</a> </#if> </#list> </#macro>
test13
@Test public void test13() { Map<String,Object> root = new HashMap<String,Object>(); fu.print("13.ftl", root); fu.fprint("13.ftl",root,"13.html"); }
输出
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> 10 <a href="#" class="pagers">4</a> <a href="#" class="pagers">5</a> <a href="#" class="pagers">6</a> <a href="#" class="pagers">7</a> <a href="#" class="pagers">8</a> <a href="#" class="pagers">9</a> <a href="#" class="pagers">10</a> <a href="#" class="pagers">11</a> <a href="#" class="pagers">12</a> <a href="#" class="pagers">13</a> [14] <a href="#" class="pagers">15</a> <a href="#" class="pagers">16</a> <a href="#" class="pagers">17</a> <a href="#" class="pagers">18</a> <a href="#" class="pagers">19</a> <a href="#" class="pagers">20</a> <a href="#" class="pagers">21</a> <a href="#" class="pagers">22</a> <a href="#" class="pagers">23</a> <a href="#" class="pagers">24</a> </body> </html>
3. 实现文章模块
14.ftl
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <#macro showArt cid titleNum> <#nested> <#local articles=arts[cid]/> <#list articles as art> <li><span><a href=""> <#if (art.title?length>titleNum)> ${art.title[0..titleNum]}... <#else> ${art.title} </#if> </span></a> </li> </#list> </#macro> <@showArt cid="1" titleNum=7> <h1>水水水水水水</h1> </@showArt> <@showArt cid="2" titleNum=10> <h1>活活后发货后会</h1> </@showArt> </body> </html>
test14
@Test public void test14() { Map<String,Object> root = new HashMap<String,Object>(); Map<String,List<Article>> arts = new HashMap<String,List<Article>>(); List<Article> a1 = Arrays.asList(new Article("说给焦点方法各家阿斯顿发贺卡就是地方贺卡设计", new Channel(1, "多对多")), new Article("看似简单干净啊", new Channel(1, "多对多")), new Article("阿斯达卡说得好斯蒂芬斯蒂芬", new Channel(1, "多对多")), new Article("阿阿斯顿撒上所说的话", new Channel(1, "多对多")), new Article("是地方贺卡设计", new Channel(1, "多对多")), new Article("斯诺克打击建设的", new Channel(1, "多对多"))); arts.put("1", a1); List<Article> a2 = Arrays.asList(new Article("你说的就是公司根据阿卡什打电话", new Channel(1, "多对多")), new Article("个撒旦发撒旦发的时候", new Channel(1, "多对多")), new Article("个很好的方法斯蒂芬斯蒂芬个", new Channel(1, "多对多")), new Article("阿撒旦发撒旦发上所说的话", new Channel(1, "多对多")), new Article("是地方贺卡设计阿斯达卡的方法撒旦发撒旦发", new Channel(1, "多对多")), new Article("阿斯顿发撒旦发撒旦发撒旦和斯诺克打击建设的", new Channel(1, "多对多"))); arts.put("2", a2); root.put("arts",arts); fu.print("14.ftl", root); fu.fprint("14.ftl",root,"14.html"); }
输出
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <h1>水水水水水水</h1> <li><span><a href=""> 说给焦点方法各家... </span></a> </li> <li><span><a href=""> 看似简单干净啊 </span></a> </li> <li><span><a href=""> 阿斯达卡说得好斯... </span></a> </li> <li><span><a href=""> 阿阿斯顿撒上所说... </span></a> </li> <li><span><a href=""> 是地方贺卡设计 </span></a> </li> <li><span><a href=""> 斯诺克打击建设的... </span></a> </li> <h1>活活后发货后会</h1> <li><span><a href=""> 你说的就是公司根据阿卡... </span></a> </li> <li><span><a href=""> 个撒旦发撒旦发的时候 </span></a> </li> <li><span><a href=""> 个很好的方法斯蒂芬斯蒂... </span></a> </li> <li><span><a href=""> 阿撒旦发撒旦发上所说的... </span></a> </li> <li><span><a href=""> 是地方贺卡设计阿斯达卡... </span></a> </li> <li><span><a href=""> 阿斯顿发撒旦发撒旦发撒... </span></a> </li> </body> </html>
freemarker讲解完毕...
相关推荐
注意介绍freemarker在开发struts2中应用DEMO,而不是为了像邮件模板的实例,真真是view层的实现。 也是本人在开发中实践的。
Freemarker 应用文档,大家可以仔细阅读以下,给予意见啊
FreeMarker概述、FreeMarker特性、FreeMarker应用指南
NULL 博文链接:https://01jiangwei01.iteye.com/blog/725280
freemarker常用标签整理,struts2+freemarker做表现层应用,flt中freemarker写法
FreeMarker不是一个Web应用框架,而适合作为Web应用框架一个组件 FreeMarker与容器无关,因为它并不知道HTTP或Servlet;FreeMarker同样可以应用于非Web应用程序环境 FreeMarker更适合作为Model2框架(如...
freeMarker的简单应用,适合入门人了解,导入myeclipse发布到tomact即可应用
Velocity 和 FreeMarker区别 对于大部分的应用来说,使用 FreeMarker 比 Velocity 更简单,因为 Velocity 还必须编写一些自定义的
适合初学freemarker的人参考的一个简单登录代码。主要是实现freemarker与struts2的整合
本源码项目是基于SpringBoot和Freemarker的Web应用设计,包含290个文件,主要使用Java、JavaScript、CSS、HTML和Shell编程语言。该项目集成了SpringBoot、SpringMVC、MyBaits、Bootstrap3、Druid和Freemarker等多个...
FreeMarker不是一个Web应用框架,而适合作为Web应用框架一个组件 FreeMarker与容器无关,因为它并不知道HTTP或Servlet;FreeMarker同样可以应用于非Web应用程序环境 FreeMarker更适合作为Model2框架(如Struts...
NULL 博文链接:https://zhousheng193.iteye.com/blog/1129664
但是,程序员可以把它应用到他们的产品中. <br>FreeMarker是设计为可以生成WEB PAGES.它是基于SERVLET遵循MVC模式的.这个思路是应用MVC模式要降低分离,网页设计人员和程序员的耦合.每个人都可以做他们擅长的工作....
FreeMarker的eclipse插件,用于快速建立FreeMarker应用
FreeMarker允许Java servlet保持图形设计同应用程序逻辑的...FreeMarker同样可以应用于非Web应用程序环境,FreeMarker更适合作为Model2框架(如Struts)的视图组件,可以在模板中使用JSP标记库,FreeMarker是免费的。
FreeMarker不是一个Web应用框架,而适合作为Web应用框架一个组件 FreeMarker与容器无关,因为它并不知道HTTP或Servlet;FreeMarker同样可以应用于非Web应用程序环境 FreeMarker更适合作为Model2框架(如Struts...
FreeMarker不是一个Web应用框架,而适合作为Web应用框架一个组件。 FreeMarker与容器无关,因为它并不知道HTTP或Servlet;FreeMarker同样可以应用于非Web应用程序环境。 FreeMarker更适合作为Model2框架(如Struts)...
FreeMarker是一个模板引擎,一个基于模板生成文本输出的通用工具,使用纯Java编写 FreeMarker被设计用来生成HTML Web页面,特别是基于MVC模式的应用程序
设计师可以改变的外观网页程序员无需更改或重新编译代码,因为应用程序逻辑( Java程序)和网页设计( FreeMarker模板)分开。 模板不会成为污染的复杂程序片段。 这一分离是有益的,在网页代码中,你甚至会觉得是...
FreeMarker概述 FreeMarker是一个模板引擎,一个基于模板生成文本输出的通用工具,使用纯Java编写 FreeMarker被设计用来生成HTML Web页面,特别是基于MVC模式的应用程序 虽然FreeMarker具有一些编程的能力...