2010-10-21 59 views
0

我想使用Freemarker在Struts2應用程序中生成電子郵件。 因爲我也在使用Freemarker進行視圖操作,所以我想「重複使用」相同的配置。在Struts2應用程序中從FreeMarker獲取模板文本

對於與Spring做同樣的事情,已經有了類似的問題。 Getting template text from FreeMarker in Spring app

我不確定從哪裏開始。

我正在查看代碼org.apache.struts2.components.template.FreemarkerTemplateEngine。 我應該複製它嗎?或者只是打電話給它?我不清楚如何取回呈現的文本。

回答

2

像這樣的事情應該做,

import com.opensymphony.xwork2.ActionSupport; 
import freemarker.template.Configuration; 
import freemarker.template.Template; 

import java.io.StringWriter; 

import javax.servlet.ServletContext; 

import org.apache.struts2.util.ServletContextAware; 
import org.apache.struts2.views.freemarker.FreemarkerManager; 

public class DummyAction extends ActionSupport implements ServletContextAware 
{ 
    private static final long serialVersionUID = 1L; 
    private ServletContext context; 

    public String execute() 
    { 
     try 
     { 
      //retrive freemarker config used by struts2 for freemarker results 
      FreemarkerManager manager = new FreemarkerManager(); 
      Configuration cfg = manager.getConfiguration(context); 
      Template template = cfg.getTemplate("your-template"); 

      //your data model 
      Object root = new Object(); 

      //process template 
      StringWriter out = new StringWriter(); 
      template.process(new Object(), out); 

      String renderedText= out.toString(); 

      System.out.println(renderedText); 

     } catch (Exception e) 
     { 
      e.printStackTrace(); 
     } 

     //do work 



     return "success?"; 
    } 

    public void setServletContext(ServletContext context) 
    { 
     this.context = context; 
    } 
} 
相關問題