当我使用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
?
答案 0 :(得分:0)
您必须像这样初始化freemarkerManager
:
FreemarkerManager freemarkerManager = Dispatcher.getInstance().getContainer().getInstance(FreemarkerManager.class);