freemarker生成word 遍历时list标签报错

最近公司用freemarker生成word表格,在用<#list></#list>遍历的时候,加的这个list标签总是报一个错误,word可以正常导出使用,请问有没有大神知道该怎么解决?我文件里的写法是<#list userList as keyList>...</#list>控制台报错如图图片说明

1个回答

标签应该没有问题,应该是你的userList出现null了,检查一下。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
List遍历时陷阱
//list遍历时陷阱 public class ListRemoveTest{ public static void main(String[] args){ List<Integer> list=new ArrayList<Integer>(); list.add(1); list.add(2);
list遍历时删除元素
前几天做项目时遇到集合遍历删除的问题,由于是初学者,很多东西都没经验,网上多方查询后终于搞定,特此记住。 package testRemove;import java.util.ArrayList;import java.util.Iterator;public class TestRemoveClear{ public static void main(String[] args) { del
freemarker遍历时获取索引值
  &amp;lt;#list testMap?keys as testKey&amp;gt; 索引值: ${testKey_index}        &amp;lt; option value=&quot;${testKey}&quot; &amp;gt;               ${testMap.get(testKey)}        &amp;lt;/option&amp;gt;...
List遍历时删除元素中存在的问题
下面列举常见的三中遍历list是删除元素的方法。 ​ public class ListTest5 { public static void main(String[] args) { ArrayList&amp;lt;String&amp;gt; list = new ArrayList&amp;lt;&amp;gt;(); list.add(&quot;java&quot;); list.add(&quot;c#&quot;); li...
python list遍历时删除元素的推荐做法
python 还是不要一边遍历,一边删除 用filter不是挺好的吗?
js 截取字符串 list遍历时
var str = "0123456789";  alert(str.substring(0));------------"0123456789"  alert(str.substring(5));------------"56789"  alert(str.substring(10));-----------""  alert(str.substring(12));-------
List如何在遍历时删除元素
背景:业务中经常会涉及遍历list时对集合进行插入或者删除操作 一、 错误方式 先看看下面几段代码,1是foreach的方式去遍历list并删除元素,2是用迭代器的方式遍历list并删除元素,3是下标遍历 1. foreach    public void testDel(){ List&amp;lt;Integer&amp;gt; list = Lists.newArrayL...
分析ArrayList在遍历时修改报错的原因
以前使用for(:){}遍历List集合并同时修改List集合中的内容时会报:ConcurrentModificationException错误,这个错误就是提示我们:方法中有对象的并发修改,但不允许这种修改时,所以抛出此异常。1.模拟遍历集合的同时修改集合(一)新建一个list集合,并给该集合依次添加1-5的字符窜,然后遍历集合,在遍历集合的时候删除”2” public static
Ztree遍历时删除数据
// 查询数据        List&amp;lt;Org&amp;gt; list = outCommonService.getOrgTree(queryOrg);                  Iterator&amp;lt;Org&amp;gt; it = list.iterator();            while(it.hasNext()){                if(&quot;4&quot;.equals(it....
哈希表遍历时问题
[code=csharp]rnhashtable ht=new hashtable();rnht.add("0",object);rnforeach (DictionaryEntry v in ht)rn rn 满足一个条件时;rn ht[v]=赋值;rn rn[/code]rn就是遍历哈希表的值,满足一个条件,更改当前值该怎么做
thymeleaf遍历时合并单元格
在开发中会遇到一个订单下有多个商品,但是他们的订单号一样,这时就需要在遍历时把订单号单元格合并起来. 没合并之前: 没合并之前代码: &lt;!DOCTYPE html&gt; &lt;html lang="en" xmlns:th="http://www.thymeleaf.org"&gt; &lt;head&gt; &lt;meta charset="UTF-8"&gt; ...
freemarker list生成静态网页
用freemarker生成静态网页,如果把一个单独的String放到map可以生成成功,可是用List,ftl文件就提示找不到list名了, rn相关代码如下: rn rnConfiguration freemarkerCfg = new Configuration(); rnfreemarkerCfg.setClassForTemplateLoading(this.getClass(), "/"); rnfreemarkerCfg.setEncoding(Locale.getDefault(), "UTF-8"); rnTemplate template; rntry rn template = freemarkerCfg.getTemplate("Hello.ftl"); rn template.setEncoding("UTF-8"); rn File htmlFile = new File("webapp/jsp/t.html"); rn Writer out = new BufferedWriter(new OutputStreamWriter( rn new FileOutputStream(htmlFile), "UTF-8")); rn HashMap propMap = new HashMap(); rn //propMap.put("user", "hermit"); 如果是这个的话,ftl如果得到user的值, rn List questTopList = new ArrayList(); rn questTopList=DBExecFactory.getInstance().getTopCCSortQuests(); rn //返回list,测试questTopList.size()=10不为空, rn propMap.put("questTopList", questTopList); rn template.process(propMap, out); rn out.flush(); rn rn rnHell.ftl文件代码: rn <#list questTopList as question> rn $question.questId rn rn用类测试的时候t.html文件已经生成,而且数据也是对了,但是它会提示如下错误 rnExpression questTopList is undefined on line 8, column 9 in Hello.ftl. rnThe problematic instruction: rn---------- rn==> list questTopList as question [on line 8, column 2 in Hello.ftl] rn---------- rn请问为什么找不到questTopList呢,是不是要放到session中,如果是又怎么放才得到呢??rn 还有用tomcat,web调用一个不是list的ftl,程序已经运行,没有错误, 可整个项目都找不到静态网页t.html,rnFile htmlFile = new File("t.html"); 到底这个方法在这里默认的目录是在哪里?rn
生成WORD freemarker导出WORD
网上找了很多有关生成WORD的例子都不能直接使用,所以自己就综合弄了一下现把项目传上来方便大家下载学习。切记项目是UTF-8编码的用的编码格式会乱码哦。。。
Freemarker生成word文档
Freemarker+xml+java生成word文档,可以生成包含文字,图片等复杂得word文档
java Freemarker生成word
绝对可用,实践过的,只需要复制代码,适合flex jsp等的应用
FreeMarker生成Word问题
用FreeMarker生成word,模板中只有一个表格,但是生成的word中的表格数量有可能是多个,且一个表格占一页rnrn1.怎么生成多个表格rnrn2.怎么让一个表格占一页,也就是插入分页符
freemarker无损生成word
freemarker无损生成word
freemarker生成word文档
1.用word写一个需要导出的word模板,然后存为xml格式。 2.将xml中需要动态修改内容的地方,换成freemarker的标识符 添加图片 如果你需要在word中添加图片,那你就在第一步制作模板时,加入一张图片占位,然后打开xml文档,可 以看到如下的一片base64编码后的代码: <w:binData w:name="wordml://03000001.png" xml:space="preserve">……(很长,省略)……</w:binData> 只要将base64的代码替换成例如:${image},如下: <w:binData w:name="wordml://03000001.png" xml:space="preserve">${image}</w:binData> 这里要注意“>${image}<”这尖括号中间不能加任何其他的诸如空格,tab,换行等符号。 自定义载入模板 当中包含完整源代码
freemarker生成word
NULL 博文链接:https://tablemiao.iteye.com/blog/2173187
freemarker生成word文档模板
freemarker生成word文档模板,配合文档使用,效果更佳。https://blog.csdn.net/xueshuiyy/article/details/86748009
FreeMarker生成word文件
FreeMarker生成word,比较简单
freemarker生成复杂word
在Web应用中,有时需要按照固定的模板将数据导出到Word,如流程审批单,在流程处理完成后将处理过程按照流程单的要求导出,有时程序中需要实现生成标准Word文档,要求能够打印,并且保持页面样式不变,常见的方案有POI、iText、JACOB、JSP几种方式,POI读取Word文档比较适合、对于生成文档样式比较难控制,iText操作Excel还可以,对Word的操作功能有限,JACOB操作Word实现复杂,并且无法将服务部署到Linux平台,要求安装office,对于实现固定格式的报表实现困难,对于JSP直接输出方式样式控制难。 Word从2003开始支持XML格式,用XML+Freemarder还做就很简单了,大致的思路是先用office2003或者2007编辑好 word的样式,然后另存为xml,将xml翻译为FreeMarker模板,最后用java来解析FreeMarker模板并输出Doc。经测试这样方式生成的word文档完全符合office标准,样式、内容控制非常便利,打印也不会变形,生成的文档和office中编辑文档完全一样。具体实现过程如下: 1、 首先用office【版本要2003以上,以下的不支持xml格式】编辑文档的样式,将需要动态填充的内容使用Freemarker标签替换:Word文档样式如下: 2、 将Word文档另存为XML格式,将后缀名“xml”修改为“ftl” 3、 使用Freemarker填充内容,代码如下: [java] view plaincopyprint? 1. package com.test.freemarker.report; 2. 3. 4. 5. import java.io.BufferedWriter; 6. 7. import java.io.File; 8. 9. import java.io.FileOutputStream; 10. 11. import java.io.IOException; 12. 13. import java.io.OutputStreamWriter; 14. 15. import java.io.Writer; 16. 17. import java.util.HashMap; 18. 19. import java.util.Map; 20. 21. 22. 23. import freemarker.template.Configuration; 24. 25. import freemarker.template.Template; 26. 27. import freemarker.template.TemplateException; 28. 29. 30. 31. public class DocumentHandler { 32. 33. private Configuration configuration = null; 34. 35. 36. 37. public DocumentHandler() { 38. 39. configuration = new Configuration(); 40. 41. configuration.setDefaultEncoding("utf-8"); 42. 43. } 44. 45. 46. 47. public void createDoc() { 48. 49. // 要填入模本的数据文件 50. 51. Map dataMap = new HashMap(); 52. 53. getData(dataMap); 54. 55. // 设置模本装置方法和路径,FreeMarker支持多种模板装载方法。可以重servlet,classpath,数据库装载, 56. 57. // 这里我们的模板是放在com.havenliu.document.template包下面 58. 59. configuration.setClassForTemplateLoading(this.getClass(), 60. 61. "/com/test/freemarker/report"); 62. 63. Template t = null; 64. 65. try { 66. 67. // test.ftl为要装载的模板 68. 69. t = configuration.getTemplate("test.ftl"); 70. 71. t.setEncoding("utf-8"); 72. 73. } catch (IOException e) { 74. 75. e.printStackTrace(); 76. 77. } 78. 79. // 输出文档路径及名称 80. 81. File outFile = new File&#40;"D:/test.doc"&#41;; 82. 83. Writer out = null; 84. 85. try { 86. 87. out = new BufferedWriter(new OutputStreamWriter( 88. 89. new FileOutputStream(outFile), "utf-8")); 90. 91. 92. 93. } catch (Exception e1) { 94. 95. e1.printStackTrace(); 96. 97. } 98. 99. try { 100. 101. t.process(dataMap, out); 102. 103. out.close(); 104. 105. } catch (TemplateException e) { 106. 107. e.printStackTrace(); 108. 109. } catch (IOException e) { 110. 111. e.printStackTrace(); 112. 113. } 114. 115. } 116. 117. 118. 119. /** 120. 121. * 注意dataMap里存放的数据Key值要与模板中的参数相对应 122. 123. * 124. 125. * @param dataMap 126. 127. */ 128. 129. private void getData(Map dataMap) { 130. 131. dataMap.put("title_name", "用户信息"); 132. 133. dataMap.put("user_name", "张三"); 134. 135. dataMap.put("org_name", "微软公司"); 136. 137. dataMap.put("dept_name", "事业部"); 138. 139. } 140. 141. } package com.test.freemarker.report; import java.io.BufferedWriter; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStreamWriter; import java.io.Writer; import java.util.HashMap; import java.util.Map; import freemarker.template.Configuration; import freemarker.template.Template; import freemarker.template.TemplateException; public class DocumentHandler { private Configuration configuration = null; public DocumentHandler() { configuration = new Configuration(); configuration.setDefaultEncoding("utf-8"); } public void createDoc() { // 要填入模本的数据文件 Map dataMap = new HashMap(); getData(dataMap); // 设置模本装置方法和路径,FreeMarker支持多种模板装载方法。可以重servlet,classpath,数据库装载, // 这里我们的模板是放在com.havenliu.document.template包下面 configuration.setClassForTemplateLoading(this.getClass(), "/com/test/freemarker/report"); Template t = null; try { // test.ftl为要装载的模板 t = configuration.getTemplate("test.ftl"); t.setEncoding("utf-8"); } catch (IOException e) { e.printStackTrace(); } // 输出文档路径及名称 File outFile = new File&#40;"D:/test.doc"&#41;; Writer out = null; try { out = new BufferedWriter(new OutputStreamWriter( new FileOutputStream(outFile), "utf-8")); } catch (Exception e1) { e1.printStackTrace(); } try { t.process(dataMap, out); out.close(); } catch (TemplateException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } /** * 注意dataMap里存放的数据Key值要与模板中的参数相对应 * * @param dataMap */ private void getData(Map dataMap) { dataMap.put("title_name", "用户信息"); dataMap.put("user_name", "张三"); dataMap.put("org_name", "微软公司"); dataMap.put("dept_name", "事业部"); } } 4、 生成的Word结果如下: 对于复杂的报表样式可以在Word中编辑后保存,如果需要输出列表类型数据可以参考Freemarker的循环或逻辑控制。
freemarker中List的系列标签
如果需要显示当前循环到第几项,可以这样写     ${word_index+1},${word} as 后面的那个变量,加上_index,就可以表示当前循环到第几项 结果是: 1,hello 2,welcome 3,hi 有时候,最后一项在显示的时候可能要做特殊处理,怎么判断最后一项?     ${word}, as 后面的那个变量,加上_has_next,就可以
freemarker list 标签中嵌套 list
freemarker list 标签中嵌套 list ,怎样获取显示里面循环出来的每个list的下标,希望每个list 的 index 都能从0开始,而不是好像一直公用一个index累加
java ArrayList遍历时删除元素
for(int i = 0;i<10;i++){ list.add(i); } //第一种删除方式 Iterator<Integer> it = list.iterator(); while(it.hasNext()){ int t = it.next(); it.remove();//通过迭代器来删除元素不会发生Con
TextBox 遍历时出错,咋回事?
rnrn[code=csharp] foreach (TextBox s in this.Controls)rn rn MessageBox.Show(s.ToString());rn rnrn遍历 textbox出差错,如下错误:rnrn[/code]无法将类型为“System.Windows.Forms.Button”的对象强制转换为类型“System.Windows.Forms.TextBox”。rnrn窗体上放两个textbox控件rnrn1 一个是直接拖的控件在winform上,这个可以。rn2 一个是动态加载到TABCONTROL上的,,,遍历这个时报错。rnrn这个咋回事,咋解决呢?
HashSet遍历时保证线程安全
知识前提:HashSet是线程安全集合,但仅限于多个线程同时对一个HashSet集合修改。 遇到的问题:多个线程同时对集合进行修改时没有遇到任何为题,但是当有一个线程在遍历的过程中对元素进行新增和删除时,此时是线程不安全的。 解决方案:其实很简单,我们只要保证遍历和集合修改时有一个互斥锁就能保证线程安全。 代码如下: public class BlockingHashSet
Java ArrayList遍历时删除元素
当我们在遍历ArrayList时,需要将满足条件的元素删除,一般的做法如下:ArrayList<String> coorList = new ArrayList<String>(); ... ... for (int i = 0; i < coorList.size(); i++) { if (coorList.get(i).equals("hello"))
grails中遍历时的索引
例: List tests=new ArrayList() tests.add ('test1') tests.add ('test2') tests.add ('test3') StringBuffer buf=new StringBuffer() buf.append(&quot;{items:[&quot;) int i=0 tests.e...
Python 列表遍历时remove
解决办法:方法很多,比如可以把不删除的元素重新添加到一个新的list中 也可以先拷贝一份列表备份,然后遍历备份列表,删除的时候就删除原列表, 再或者基于索引遍历,当需要删除元素的时候,索引值对应减1,这些方法都可以根据自己需求选择。...
ArrayList遍历时不能写
package com.sk.thread;import java.util.ArrayList; import java.util.Collection; import java.util.ConcurrentModificationException; import java.util.Iterator; import java.util.concurrent.CopyOnWriteArrayL
动态生成控件遍历时出错
private void Page_Load(object sender, System.EventArgs e)rn rn if(!IsPostBack)rn rn create_controls();rn rn rn rnprivate void create_controls()rn rn //选择复选框设备类别rn if(CheckBoxList1.Items[0].Selected )rn rn DropDownList dr=new DropDownList();rn dr.ID=CheckBoxList1.Items[0].Value;rn dr.EnableViewState=true;rn rn dr.Items.Add("");rn SqlDataReader ds=DataAccess.dataReader("select distinct dmhy,dm from hnsb..hnsb_dm01 where lb='JCJ'");rn while(ds.Read())rn rn ListItem item=new ListItem();rn item.Text=ds["dmhy"].ToString();rn item.Value=ds["dmhy"].ToString()+ds["dm"].ToString();rn dr.Items.Add(item);rn rn ds.Close();rn Panel1.Controls.Add(dr);rn rn rnrnstring submit_condition()rn rn //获取查询条件rn sel="";rn rnrn if(CheckBoxList1.Items[0].Selected)rn rn DropDownList dr=(DropDownList)Panel1.FindControl(CheckBoxList1.Items[0].Value);rn //sel +=" sbdm='"+dr.SelectedItem.Text+"' and";rn Label1.Text=dr.ID;rn rnrn为什么Label1显示时出错,未将对象引入到实例
JAVA中LISt遍历时如何remove元素
遍历删除List中的元素有很多种方法,当运用不当的时候就会产生问题。下面主要看看以下几种遍历删除List中元素的形式: 第一种:普通for循环正向遍历 for(int i = 0;i < list.size();i++){ String b = list.get(i); if(b.equals("502323232")){
使用ListIterator 对List遍历时修改,删除
使用ListIterator实现对List进行遍历时修改,以及List的反向遍历
【FreeMarker】利用freemarker生成word版报表
前言: 在很多业务系统中,都需要生成月报,周报的报表。freemaker就很适合生成word版报表,freemaker就是利用word本身自带的xml格式进行文本替换,图片替换等操作的,当然除了简单的替换文本之外,他还有其他的高级用法,详情请见freemaker的官网,官网地址在文末给出。 利用freemaker生成报表只需要几个简单的步骤。 下面利用示例展示整个流程1,制作word模板按
Java遍历时删除List、Set、Map中的元素(源码分析)
在对List、Set、Map执行遍历删除或添加等改变集合个数的操作时,不能使用普通的while、for循环或增强for。会抛出ConcurrentModificationException异常或者没有达到删除的需求。在遍历时删除元素,需要使用迭代器的方式,代码示例如下: public class CollectionRemoveDemo { public static void mai
Python:remove在list遍历时使用会发生什么
先来看看这个简单的程序: a=[1,2,3,4,5] for i in a: if i != 2 a.remove(i) print(a) 按照刚开始学习python 时候的想法,remove的作用是将list中的元素删除掉,那么这一次的输出必然是 [2] 但是在实际使用时,发现发生了错误,list的长度总是与想法大相径庭,因此手动将代码敲了一下,得出的结果是:...
标签遍历时的问题,字段都有,get,set也有
[code=java] rn rn $list.name rn $list.phoneNum rn $list.QQ rn $list.birthday rn $list.hometown rn $list.words rn rn 修改rn 删除rn [/code]rn报错:javax.el.PropertyNotFoundException: Property 'name' not found on type userpackage.Classmaternrn怎么解决啊。。。在网上找过了。。。没有解决
hashmap遍历时用map.remove方法为什么会报错?
笔者最近在调试项目bug的时候,遇到了一个很奇怪的bug,就是在对hashmap集合进行遍历的时候,同时做了remove操作,这个操作最后导致抛出了java.util.ConcurrentModificationException的错误。 带着疑惑,下面参考着源码,分析问题的原因。 首先,重现问题,构造一个map并往里面加元素: private static HashMap&lt;Integer,...
freemarker生成word不显示图片
我在生成word的设时候文字显示总是没问题,但是图片一直显示不出来,网上查了好久也一直也没找到问题, 标题图片显示失败 后来进过比对刚生成的xml文件和我格式化后的xml文件发现刚生成的xml文件的base64码是左对齐的而我的已经格式化了如图: 格式化后存base64变量的位置 解决办法: 将变量左对齐后重新生成发现好使了如图: 成功显示图片变量左对齐...
相关热词 c# 标准差 计算 c#siki第五季 c#入门推荐书 c# 解码海康数据流 c# xml的遍历循环 c# 取 查看源码没有的 c#解决高并发 委托 c#日期转化为字符串 c# 显示问号 c# 字典对象池