当我使用 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);
它没有问题
谁能告诉我如何使用freemarkerManager
Struts 2.3.15?