首页 > 其他 > 详细

使用FreeMarker生成Word出错的一点心得

时间:2014-01-28 01:36:33      阅读:560      评论:0      收藏:0      [点我收藏+]

这几天在维护一个导出word的一个功能,领导改了word模板,不得不重来一遍。也不过是刘欢歌中所言:“只不过是重头再来”。废话少说,直接进入主题。用了FreeMaker这么多天,也总结出不少规律。FreeMarker报错就是下面两种。

情景1:

Expression hello is undefined on line 3, column 85440 in doc.ftl.
The problematic instruction:
----------
==> ${label} [on line 3, column 85438 in doc.ftl]
----------

情景2

Was expecting one of:
    <STRING_LITERAL> ...
    <RAW_STRING> ...
    "false" ...
    "true" ...
    <INTEGER> ...
    <DECIMAL> ...
    "." ...
    "+" ...
    "-" ...
    "!" ...
    "[" ...
    "(" ...
    "{" ...
    <ID> ...

第一种错误比较直观,是因为在ftl中定义的${label} 并没有赋值。

今天讨论的是第二种错误,这个错误在使用FreeMarker导出word时,时常出现,若隐若现,飘忽不定,做的好好的就除了这么一个错误,让人恼火,同时也增加了它的神秘性,在百度后,没有找到关于它的解决方法。今天研究了很长时间,终于找到出错原因了。出错表格部分如下:

bubuko.com,布布扣

由于培训是两列,第一次做的时候,直接将第一行写好的变量直接复制到第二行,

bubuko.com,布布扣

测试了一下当培训只有一条的情况下,显示了两条相同的数据,OK导出正常。如下图:

bubuko.com,布布扣

但是,当第二行数据重命名时候:

bubuko.com,布布扣

会出现第二种情况的错误,显然是标签错误,但仔细检查后,也没发现任何问题,奇了怪了。无奈,经多次尝试,最终删掉第二行,将第二行的数据重新手打了一遍,没用复制粘贴。然后测试,PASS!  难道还真的是这个问题,又将第二行第一列中的${pxname2}改成了第一行第一列中的${pxname},测试,不出意料,报错!

由此,在开发中,flt定义好的标签要更改,要将该标签删掉,重新打一次,不要在标签上直接更改,否则就会报错。原因呢,也许只有耶稣才知道吧。


使用FreeMarker生成Word出错的一点心得

原文:http://blog.csdn.net/changhuiyuanh/article/details/18820755

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!