Strut2和FreeMarker整合时的一些问题
生活随笔
收集整理的這篇文章主要介紹了
Strut2和FreeMarker整合时的一些问题
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
在struts2與freemarker整合時,可以在項目的類路徑下放置freemarker.properties配置文件,
package?com.ldl.freemarker; ?? ?? import?java.io.BufferedWriter; ?? import?java.io.IOException; ?? import?java.io.OutputStreamWriter; ?? import?java.io.Writer; ?? import?java.util.HashMap; ?? import?java.util.Map; ?? import?java.util.Properties; ?? ?? import?freemarker.cache.ClassTemplateLoader; ?? import?freemarker.template.Configuration; ?? import?freemarker.template.DefaultObjectWrapper; ?? import?freemarker.template.Template; ?? import?freemarker.template.TemplateException; ?? ?? public?class?freemarkerTest?{ ?? ?? ????/** ? ?????*?@param?args ? ?????*?@throws?IOException? ? ?????*?@throws?TemplateException? ? ?????*/?? ????@SuppressWarnings("unchecked") ?? ????public?static?void?main(String[]?args)?throws?IOException,?TemplateException?{ ?? ????????Configuration?cfg?=?new?Configuration(); ?? ????????cfg.setTemplateLoader(new?ClassTemplateLoader(freemarkerTest.class,"")); ?? ????????cfg.setObjectWrapper(new?DefaultObjectWrapper()); ?? ????????//加載并設置freemarker.properties ?? ????????Properties?p?=?new?Properties(); ?? ????????p.load(Thread.currentThread().getContextClassLoader().getResourceAsStream("freemarker.properties")); ?? ????????cfg.setSettings(p); ?? ????????/*?在整個應用的生命周期中,這個工作你可以執行多次?*/?? ????????/*?獲取或創建模板*/?? ????????Template?temp?=?cfg.getTemplate("test.xml"); ?? ????????/*?創建數據模型?*/?? ????????Map?root?=?new?HashMap(); ?? ????????root.put("user",?"Big?Joe"); ?? ????????/*?將模板和數據模型合并?*/?? ????????Writer?out?=?new?BufferedWriter(new?OutputStreamWriter(System.out)); ?? ????????temp.process(root,?out); ?? ????????out.flush(); ?? ????} ?? }??
package com.ldl.freemarker;import java.io.BufferedWriter;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;import freemarker.cache.ClassTemplateLoader;
import freemarker.template.Configuration;
import freemarker.template.DefaultObjectWrapper;
import freemarker.template.Template;
import freemarker.template.TemplateException;public class freemarkerTest {/*** @param args* @throws IOException * @throws TemplateException */@SuppressWarnings("unchecked")public static void main(String[] args) throws IOException, TemplateException {Configuration cfg = new Configuration();cfg.setTemplateLoader(new ClassTemplateLoader(freemarkerTest.class,""));cfg.setObjectWrapper(new DefaultObjectWrapper());//加載并設置freemarker.propertiesProperties p = new Properties();p.load(Thread.currentThread().getContextClassLoader().getResourceAsStream("freemarker.properties"));cfg.setSettings(p);/* 在整個應用的生命周期中,這個工作你可以執行多次 *//* 獲取或創建模板*/Template temp = cfg.getTemplate("test.xml");/* 創建數據模型 */Map root = new HashMap();root.put("user", "Big Joe");/* 將模板和數據模型合并 */Writer out = new BufferedWriter(new OutputStreamWriter(System.out));temp.process(root, out);out.flush();}
}
struts2會自動讀取(struts2封裝了)。今天用freemarker作為模板生成靜態文件時,發現并不讀取freemarker.properties配置文件。
看一下freemarker源碼,freemarker本身并不加載freemarker.properties配置文件,需要代碼中指定配置文件。
代碼如下:
?
Java代碼 ??測試代碼在附件中,freemarker.properties里的default_encoding值為utf-8,看控制臺打印的是否有亂碼,如果有亂碼說明生效了。
總結
以上是生活随笔為你收集整理的Strut2和FreeMarker整合时的一些问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 军队文职体检会安排在周末吗
- 下一篇: 当兵政治审核怎么审