1、將freemarker的jar包添加到項目中
2、創建Action類
Java代碼
//此處的Configuration是freemarker包中的Configuration因為我們在開發中會用到
//各種框架例如hibernate,都會有Configuration,別引入錯了
private static Configuration cfg = new Configuration();
static {
//配置freemarker從什麼地方載入模板
cfg.setTemplateLoader(new ClassTemplateLoader(DocumentAction.class, "templates"));
//忽略異常
cfg.setTemplateExceptionHandler(TemplateExceptionHandler.IGNORE_HANDLER);
}
//獲取動態的表單
public String dynaForm(int workFlowId) {
try {
//載入與該流程定義相關的流程表單對象
FlowForm form = this.flowFormService.searchFlowFormByWorkFlowId(workFlowId);
if(form == null) {
return null;
}
//得到該流程表單所應用的模板
Template template = cfg.getTemplate(form.getTemplate());
Map root = new HashMap();
//將查詢出來的form對象通過map放到模板中,在模板的定義中會使用到,調用的時候會填充好數據顯示出來
root.put("form", form);
Writer out = new StringWriter();
//將根據模板生成頁面數據顯示到相應的頁面上
template.process(root, out);
return out.toString();
} catch (Exception e) {
e.printStackTrace();
}
return "";
}
我們可以在需要顯示該模板的頁面中調用該方法,就會顯示出相應的模板內容:
Html代碼
<s:property value="dynaForm(workFlowId)" escape="false" />
[火星人 ] struts2與freemarker的集成已經有341次圍觀