使用Freemarker 模板.FTL文件无法取到值

landxlost 2011-03-30 08:31:38
Struts2 Spring 框架下 Freemarker 的模板文件无法取到值
贴下相关代码:

public class createStaticHTML {


private static Configuration freemarkerCfg = new Configuration();

static{
freemarkerCfg.setServletContextForTemplateLoading(ServletActionContext.getServletContext(), "/WEB-INF/template");
freemarkerCfg.setEncoding(Locale.getDefault(), "utf-8");
freemarkerCfg.setTemplateExceptionHandler(TemplateExceptionHandler.IGNORE_HANDLER);
}

public static void createHTML(Map<String,Object> sourcedata,String templatePath,String targetHtmlPath) throws IOException, TemplateException{

try{
Template template = freemarkerCfg.getTemplate(templatePath,"utf-8");
template.setEncoding("utf-8");

String htmlPath = ServletActionContext.getServletContext().getRealPath("/")+targetHtmlPath;
File htmlFile = new File(htmlPath);

Writer out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(htmlFile), "utf-8"));
template.process(sourcedata, out);
out.flush();
out.close();
}catch (Exception e) {
e.printStackTrace();
}
}


}


下面是Action中测试的一个例子

public class WelcomeCurtainAction extends ActionSupport {
//private String returnhtmlpath;

@Override
public String execute() throws Exception{

Map<String,Object> MoodTextData = new HashMap<String,Object>();
TextData.put("title", "aaaaaaaaaaaaa");
TextData.put("context", "bbbbbbbbbbbbbbbbbbbbbbbbb");

//String htmlpath = "testhtml.html";
createStaticHTML.createHTML(TextData,"testhtml.ftl", "testhtml.html");

//this.returnhtmlpath=htmlpath;
return SUCCESS;


}


testhtml.FTL 文件

<div id="XXXXX_feature">
<div id="feature_left">
<h1>${TextData.title}</h1>
<p>${TextData.context}</p>
</div>
</div>



运行后 生成的testhtml.html文件 ${TextData.title} ${TextData.context} 取不到值,望大家帮忙看下
...全文
330 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
布鲁布鲁嘭 2012-04-11
  • 打赏
  • 举报
回复

Map<String,Object> MoodTextData = new HashMap<String,Object>();
TextData.put("title", "aaaaaaaaaaaaa");
TextData.put("context", "bbbbbbbbbbbbbbbbbbbbbbbbb");

//String htmlpath = "testhtml.html";
createStaticHTML.createHTML(TextData,"testhtml.ftl", "testhtml.html");

你上面是MoodTextData 后面怎么就变成TextData了啊,你改下应该就可以了,不过你编辑的时候不可能不报错啊!!!
tastypinenut 2011-09-28
  • 打赏
  • 举报
回复

<div id="XXXXX_feature">
<div id="feature_left">
<h1>${TextData.title}</h1>
<p>${TextData.context}</p>
</div>
</div>

删除红色部分试试
wallecheung 2011-09-28
  • 打赏
  • 举报
回复
因为都不懂这个东西。。。呵呵!!!我也是取不到值。。。
landxlost 2011-03-30
  • 打赏
  • 举报
回复
找了一些解决的办法不起作用啊。怎么就没人来踩下呢。。。
landxlost 2011-03-30
  • 打赏
  • 举报
回复
没人帮忙看下吗

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧