3

当我使用 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.8loadSettings()方法是这样的:

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

它没有问题

谁能告诉我如何使用freemarkerManagerStruts 2.3.15?

4

1 回答 1

0

您必须像这样初始化freemarkerManager

FreemarkerManager freemarkerManager = Dispatcher.getInstance().getContainer().getInstance(FreemarkerManager.class);
于 2013-10-31T01:00:08.097 回答