Struts2.3.15 freemarker集成

时间:2013-07-19 06:58:05

标签: struts2 freemarker

当我使用Struts 2.1.8时,我使用了这样的freemarker:

在applicationContext.xml中配置bean:

<bean id="freemarkerManager" 
      class="org.apache.struts2.views.freemarker.FreemarkerManager"/>
代码中的

try {
    ServletContext servletContext = ServletActionContext.getServletContext();
    System.out.println(freemarkerManager.getConfig());
    Configuration configuration = 
                              freemarkerManager.getConfiguration(servletContext);
    Template template = configuration.getTemplate(templateFilePath);
    File htmlFile = new File(servletContext.getRealPath(htmlFilePath));
    File htmlDirectory = htmlFile.getParentFile();
    if (!htmlDirectory.exists()) {
        htmlDirectory.mkdirs();
    }
    Writer out = new BufferedWriter(new OutputStreamWriter(
                                      new FileOutputStream(htmlFile), "UTF-8"));
    template.process(data, out);
    out.flush();
    out.close();
} catch (Exception e) {
    e.printStackTrace();
}

它适用于Struts 2.1.8;

但是现在我使用Struts 2.3.15,它不起作用;它无法加载freemarker.properties。我阅读了源代码,问题是fileManager方法中loadSettings()为空:

try {
    in = fileManager.loadFile(
               ClassLoaderUtil.getResource("freemarker.properties", getClass()));
Struts 2.1.8中的

loadSettings()方法是这样的:

InputStream in = null;
try {
    in = FileManager.loadFile("freemarker.properties", FreemarkerManager.class);

没有问题

任何人都可以告诉我如何在Struts 2.3.15上使用freemarkerManager

1 个答案:

答案 0 :(得分:0)

您必须像这样初始化freemarkerManager

FreemarkerManager freemarkerManager = Dispatcher.getInstance().getContainer().getInstance(FreemarkerManager.class);