读书人

freemarker导出word时报出错误求帮助

发布时间: 2012-12-19 14:13:14 作者: rapoo

freemarker导出word时报出异常求帮助!
上代码先(直接从网上粘的自己稍作修改):


package example;



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(),
"/ccc/");

Template t = null;

try {

// test.ftl为要装载的模板

t = configuration.getTemplate("niuwode.ftl");

t.setEncoding("utf-8");

} catch (IOException e) {

e.printStackTrace();

}

// 输出文档路径及名称

File outFile = new File("E:/test.doc");

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", "事业部");

}

public static void main(String[] args) {
// TODO Auto-generated method stub
DocumentHandler dh = new DocumentHandler();
dh.createDoc();
}
}



报出的异常是:
freemarker.core.ParseException: Encountered "<" at line 3, column 3011 in niuwode.ftl.
Was expecting one of:
<STRING_LITERAL> ...
<RAW_STRING> ...
"false" ...
"true" ...
<INTEGER> ...
<DECIMAL> ...
"." ...
"+" ...
"-" ...
"!" ...
"[" ...
"(" ...
"{" ...
<ID> ...

at freemarker.core.FMParser.generateParseException(FMParser.java:4697)
at freemarker.core.FMParser.jj_consume_token(FMParser.java:4568)
at freemarker.core.FMParser.UnaryExpression(FMParser.java:323)
at freemarker.core.FMParser.MultiplicativeExpression(FMParser.java:435)
at freemarker.core.FMParser.AdditiveExpression(FMParser.java:385)
at freemarker.core.FMParser.RangeExpression(FMParser.java:556)
at freemarker.core.FMParser.RelationalExpression(FMParser.java:511)
at freemarker.core.FMParser.EqualityExpression(FMParser.java:476)
at freemarker.core.FMParser.AndExpression(FMParser.java:585)
at freemarker.core.FMParser.OrExpression(FMParser.java:608)
at freemarker.core.FMParser.Expression(FMParser.java:221)
at freemarker.core.FMParser.StringOutput(FMParser.java:1061)
at freemarker.core.FMParser.Content(FMParser.java:2575)
at freemarker.core.FMParser.OptionalBlock(FMParser.java:2786)
at freemarker.core.FMParser.Root(FMParser.java:2958)
at freemarker.template.Template.<init>(Template.java:149)
at freemarker.cache.TemplateCache.loadTemplate(TemplateCache.java:457)
at freemarker.cache.TemplateCache.getTemplate(TemplateCache.java:370)
at freemarker.cache.TemplateCache.getTemplate(TemplateCache.java:238)
at freemarker.template.Configuration.getTemplate(Configuration.java:493)
at freemarker.template.Configuration.getTemplate(Configuration.java:458)
at example.DocumentHandler.createDoc(DocumentHandler.java:64)
at example.DocumentHandler.main(DocumentHandler.java:139)
Exception in thread "main" java.lang.NullPointerException
at example.DocumentHandler.createDoc(DocumentHandler.java:96)
at example.DocumentHandler.main(DocumentHandler.java:139)

求帮助啊!本人新手菜鸟一枚。。。
------最佳解决方案--------------------


freemarker.core.ParseException——这个意思就是转换错误,你可能某个freemarker的表达式写得有问题
[其他解释]
自己顶一下,求解答啊
[其他解释]
没人能给点意见吗
[其他解释]

引用:
freemarker.core.ParseException——这个意思就是转换错误,你可能某个freemarker的表达式写得有问题


我只是用了一个XML转成ftl格式的模板,错误位置(LINE 3 COLUMN 3011)是${title_name}中的${这个位置

读书人网 >Java Web开发

热点推荐