ftl文件怎么写( 二 )


4. freemarker 导出word 文档 怎么写 将要导出的Word另存为xml格式的文件 , 打开xml 在其中添加freemarker标签 , 然后另存为outChairDoc.ftl文件.第一步要加入Freemarker.jar包 。
Servlet代码如下:在outChairDoc.ftl放在包cn.skyclass.jiaowu.freemarker.template下public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { configuration = new Configuration(); configuration.setDefaultEncoding("utf-8"); try { createDoc(response); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); }}public void createDoc(HttpServletResponse response) throws Exception {// 要填入模本的数据文件 Map dataMap = new HashMap(); dataMap.put("docTitle", "fdfdfdfdfdfdf用户信息"); List list = new ArrayList(); ChairInfo chairInfo = new ChairInfo(); chairInfo.setChairTitle("dfdfd"); chairInfo.setTeacherName("tea"); chairInfo.setStartTime(new Date()); chairInfo.setPlace("dfdfd"); list.add(chairInfo); dataMap.put("chairInfoList", list); // 设置模本装置方法和路径 , FreeMarker支持多种模板装载方法 。可以重servlet,classpath , 数据库装载 , // 这里我们的模板是放在com.havenliu.document.template包下面configuration.setClassForTemplateLoading(this.getClass(),"/cn/skyclass/jiaowu/freemarker/template");Template t = null;try {// test.ftl为要装载的模板 t = configuration.getTemplate("outChairDoc.ftl"); t.setEncoding("utf-8"); } catch (IOException e) {e.printStackTrace();}// 输出文档路径及名称 String fileName="讲座列表.doc"; response.setContentType("application/msword"); response.addHeader("Content-Disposition", "attachment; filename=" + java.net.URLEncoder.encode(fileName, "UTF-8"));//可防止导出的文件乱码response.setCharacterEncoding("utf-8");PrintWriter out = response.getWriter();t.process(dataMap, out);out.close();} 。
5. eclipse编辑ftl时怎样有标签以及方法的提示 eclipse编辑ftl提示需要使用hudson.freemarker_ide插件 。
1、在一个ftl文件中使用java对象时 , 不能提示出这个对象的属性 。如${user.name} 。输入user.后不会将name进行补全
2、在一个ftl文件中定义一个macro , 另一个文件中使用这个macro时 , 鼠标移上去 , 按住ctrl键不能直接定位带该macro定义的地方 。这导致 , 实际开发中要找某个macro的代码非常麻烦 , 还得动用eclipse的搜索功能!
6. ftl文件中可以写if嵌套吗 freemarker常见语法大全
FreeMarker的插值有如下两种类型:1 , 通用插值${expr};2 , 数字格式化插值:#{expr}或#{expr;format}
${book.name?if_exists } //用于判断如果存在 , 就输出这个值
${book.name?default('xxx')}//默认值xxx
${book.name!"xxx"}//默认值xxx
${book.date?string('yyyy-MM-dd')} //日期格式
${book?string.number} 20 //三种不同的数字格式
${book?string.currency}--<#-- $20.00 -->
${book?string.percent}—<#-- 20% -->
<#assign foo=ture />; //声明变量 , 插入布尔值进行显示
${foo?string("yes","no")} <#-- yes -->
大小比较符号使用需要注意:(xml的原因) , 可以用于比较数字和日期
使用lt、lte、gt和gte来替代<;、<;=、>;和>;= 也可以使用括号<#if (x>y)>
内置函数: 调用区别于属性的访问 , 使用?代替.
常见的一些内置函数
对于字符串
html-对字符串进行HTML编码
cap_first-使字符串第一个字母大写
lower_case-将字符串转换成小写
trim-去掉字符串前后的空白字符
示例:${“freeMarker”?cap_first}
对于Sequences(序列)
size-获得序列中元素的数目
对于数字