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

这几天在维护一个导出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时,时常出现,若隐若现,飘忽不定,做的好好的就除了这么一个错误,让人恼火,同时也增加了它的神秘性,在百度后,没有找到关于它的解决方法。今天研究了很长时间,终于找到出错原因了。出错表格部分如下:

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

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

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

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

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


  • 6
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值