3
當我使用Struts 2.1.8,我用freemarker的是這樣的:Struts2.3.15 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.8 loadSettings()
方法是這樣的:
InputStream in = null;
try {
in = FileManager.loadFile("freemarker.properties", FreemarkerManager.class);
它有沒有問題
有誰能告訴我如何在Struts 2.3.15上使用freemarkerManager
?
你真的需要從'freemarkerManager' FreeMarker的配置,或者它是好的,如果你會爲它創建新的配置? –
Aleksandr M,你是對的,它不是必須從freemarkerManager獲取配置,爲什麼我使用它,首先,因爲Struts2.1.8工作正常,我想找到爲什麼Struts22.3.15不能工作;第二,我有一個freemarker.properties,我不想自己設置屬性,所以我想讓FreemarkerManager做到這一點。 –
我擴展了FreemarkerManager並像下面這樣覆蓋了loadSettings方法:public class CustomFreemarkerManager extends FreemarkerManager { \t \t private static final Logger LOG = LoggerFactory.getLogger(CustomFreemarkerManager.class); \t @Override \t protected void loadSettings(ServletContext servletContext){ InputStream in = null; 嘗試{ \t //獲取Freemarker的配置文件 \t資源資源=新使用ClassPathResource( 「freemarker.properties」); \t in = resource.getInputStream(); –