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で null です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 に答える