从Struts2应用程序中的FreeMarker获取模板文本 [英] Getting template text from FreeMarker in Struts2 app

查看:142
本文介绍了从Struts2应用程序中的FreeMarker获取模板文本的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想使用Freemarker在Struts2应用程序中生成电子邮件。
由于我也在使用Freemarker查看我的观点,我想重复使用相同的配置。

I would like to generate email inside a Struts2 application, using Freemarker. As I am also using Freemarker for my view, I would like to "reuse" the same config.

这样做也有类似的问题春天的事。
从Spring应用程序中的FreeMarker获取模板文本

There is already a similar question for doing the same thing with Spring. Getting template text from FreeMarker in Spring app

我不知道从哪里开始。

我正在查看 org的代码。 apache.struts2.components.template.FreemarkerTemplateEngine 即可。
我应该复制吗?或者简单地称之为?我不清楚如何取回渲染文本。

I am looking at the code of org.apache.struts2.components.template.FreemarkerTemplateEngine. Should I replicate it ? or simply call it ? I am unclear on how to get back the rendered text.

推荐答案

这样的事情应该做,

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

这篇关于从Struts2应用程序中的FreeMarker获取模板文本的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆