FreeMarker一些常见错误的总结
最近在做一个人物管理系统,需要做一个导出word的功能。经过一番查找,最终决定使用FreeMarker来做这个东西,做了两天,终于成型了。部分效果如下(表内数据纯属虚构).具体步骤就不一一赘述了,一搜一大堆。在具体使用的过程中,出现过一下问题。1.FreeMarker 多行数据的换行问题,在FreeMarker 中会把“\n”处理厂空格,所以需要换行的时候需要把“\n”替换掉。
最近在做一个人物管理系统,需要做一个导出word的功能。经过一番查找,最终决定使用FreeMarker来做这个东西,做了两天,终于成型了。部分效果如下(表内数据纯属虚构).
具体步骤就不一一赘述了,一搜一大堆。
在具体使用的过程中,出现过一下问题。
1.FreeMarker 多行数据的换行问题,在FreeMarker 中会把“\n”处理厂空格,所以需要换行的时候需要把“\n”替换掉。
string = string.replaceAll("\n", "<w:br />");
2.FreeMarker 在刚开始使用时,经常莫名其妙地报标签匹配错。如下
Was expecting one of:
<STRING_LITERAL> ...
<RAW_STRING> ...
"false" ...
"true" ...
<INTEGER> ...
<DECIMAL> ...
"." ...
"+" ...
"-" ...
"!" ...
"[" ...
"(" ...
"{" ...
<ID> ...
这种错误一般都是因为自定义标签的问题,而且当标签多的时候,查找起来就很困难了。所以在写的的时候,一定要仔细,不要漏掉一些括号之类的符号。
但有的时候,已经确保标签已经没有任何问题,但还是报上面的错误。郁闷了很长时间,最后找到了问题所在,在编辑word的时候使用了WPS,解决方案:就是只用Office Word编辑,不要使用WPS.
3.图片插入问题,在word插入一张头像后,只显示其中的一行,这也很令人郁闷,虽然只是一个word的问题,也有研究了半个小时。最后是因为行高问题,调节行高,即可显示整张图片。
4.在插入图片的时候,一定要注意“>${image}<”这尖括号中间不能加任何其他的诸如空格,tab,换行等符号!在这上面这两天可吃了不少苦。
5.对于flt中所有定义的标签,必须在map中放入其键值对。不然又会报错。
最后做完后发现,导出的doc,使用word可以正常打开,但是在wps中的换行的显示效果却差强人意,目前还没有比较好的解决办法。
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
补充:2014 02 12
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
解决一FreeMarker中图片无法显示的错误:
起因:如果你需要在word中添加图片,那你就在第一步制作模板时,加入一张图片占位,然后打开xml文档,可以看到如下的一片base64编码后的代码:
<w:binData w:name="wordml://03000001.png" xml:space="preserve">iVBORw0…(base64码)…CC</w:binData>
只要将base64的代码替换成例如:${image},测试OK,没有问题。但是,在编辑其他标签后,负责图片的<w:binData/>标签不负责任的消失了,楼主是在word2003下进行编辑的。
解决方案:使用FreeMarker生产word时,当其他标签部分都做好时,再做图片部分。
更多推荐
所有评论(0)