鸿 网 互 联 www.68idc.cn

康立贤 廊坊师范学院信息技术提高班 第九期

来源:互联网 作者:佚名 时间:2014-12-30 21:27
FreeMarker是一个模板引擎,一个基于模板生成文本输出的通用工具,使用纯Java编写。FreeMarker被设计用来生成HTMLWeb页面,特别是基于MVC模式的应用程序。所谓模

     所谓模板,就是一份已经写好了基本内容,有着固定格式的文档,其中空出或者用占位符标识的内容,由使用者来填充,不同的使用者给出的数据是不同的。在模板中的占位符,在模板运行时,由模板引擎来解析模板,并采用动态数据替换占位符部分的内容。


 

分离表现层和业务逻辑

 

 

提高开发效率

 

 

分工明确

        以往用JSP展现数据时,,程序员并不熟悉界面设计技术,反之界面开发人员,也并不熟悉程序语言。协调工作很困难,使用FreeMarker后,作为界面开发人员,只专心创建HTML文件、图像以及Web页面的其他可视化方面,不用理会数据;而程序开发人员则专注于系统实现,负责为页面准备要显示的数据。

 

 

配置文件:

<!-- FreeMarker--> <beanid="freemarker"class="freemarker.template.Configuration"> <propertyname="templateLoader" ref="templetLoader" /> <propertyname="defaultEncoding" value="UTF-8"></property> <propertyname="numberFormat" value="0"></property> </bean>

代码:

public Template getTemplate(String tableName) { Template template = null; try { template = freemarker.getTemplate(tableName,freemarker.getLocale(), ENCODING); return template; } catch (IOException e) { e.printStackTrace(); return null; } } public void list(String id, HttpServletRequest request, HttpServletResponse response) { //step.1 根据表名获取该表单的配置参数 String jversion = cgFormFieldService.getCgFormVersionByTableName(id); Map<String, Object> configs = configService.queryConfigs(id,jversion); //step.2 获取列表ftl模板路径 FreemarkerHelper viewEngine = new FreemarkerHelper(); Map<String, Object> paras = new HashMap<String, Object>(); //step.3 封装页面数据 loadVars(configs,paras,request); //step.4 组合模板+数据参数,进行页面展现 String html = viewEngine.parseTemplate("/itoo/cgform/freemaker/autolist.ftl", paras); try { response.setContentType("text/html"); response.setHeader("Cache-Control", "no-store"); PrintWriter writer = response.getWriter(); writer.println(html); writer.flush(); } catch (IOException e) { e.printStackTrace(); } }

ftl模版:

<#setting number_format="0.#####################"> <!DOCTYPE html> <html> <head> <title></title> <script type="text/javascript" src="plug-in/jquery/jquery-1.8.3.js"></script><script type="text/javascript" src="plug-in/tools/dataformat.js"></script><link id="easyuiTheme" rel="stylesheet" href="plug-in/easyui/themes/default/easyui.css" type="text/css"></link><link rel="stylesheet" href="plug-in/easyui/themes/icon.css" type="text/css"></link><link rel="stylesheet" type="text/css" href="plug-in/accordion/css/accordion.css"><script type="text/javascript" src="plug-in/easyui/jquery.easyui.min.1.3.2.js"></script><script type="text/javascript" src="plug-in/easyui/locale/easyui-lang-zh_CN.js"></script><script type="text/javascript" src="plug-in/tools/syUtil.js"></script><script type="text/javascript" src="plug-in/My97DatePicker/WdatePicker.js"></script><script type="text/javascript" src="plug-in/lhgDialog/lhgdialog.min.js"></script><script type="text/javascript" src="plug-in/tools/curdtools.js"></script><script type="text/javascript" src="plug-in/tools/easyuiextend.js"></script> <link rel="stylesheet" href="plug-in/uploadify/css/uploadify.css" type="text/css"></link><script type="text/javascript" src="plug-in/uploadify/jquery.uploadify-3.1.js"></script><script type="text/javascript" src="plug-in/tools/Map.js"></script> </head> <body style="overflow-y: scroll" > <form id="formobj" action="cgFormBuildController.do?saveOrUpdate" name="formobj" method="post"> <input type="hidden" id="btn_sub" class="btn_sub"/> <input type="hidden" name="tableName" value="${tableName?if_exists?html}" > <input type="hidden" name="id" value="${id?if_exists?html}" > <#list columnhidden as po> <input type="hidden" id="${po.field_name}" name="${po.field_name}" value="${data['${tableName}']['${po.field_name}']?if_exists?html}" > </#list> </form>

 

网友评论
<