繁体   English   中英

在Struts2应用中从FreeMarker获取模板文本

[英]Getting template text from FreeMarker in Struts2 app

我想使用Freemarker在Struts2应用程序中生成电子邮件。 因为我也在视图中使用Freemarker,所以我想“重用”相同的配置。

使用Spring做同样的事情已经存在类似的问题。 在Spring应用程序中从FreeMarker获取模板文本

我不知道从哪里开始。

我正在看org.apache.struts2.components.template.FreemarkerTemplateEngine的代码。 我应该复制吗? 还是简单地称呼它? 我不清楚如何取回渲染的文本。

这样的事情应该做,

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;
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM