java - 从 Struts2 应用程序中的 FreeMarker 获取模板文本

标签 java templates struts2 freemarker

我想使用 Freemarker 在 Struts2 应用程序中生成电子邮件。 由于我的 View 也使用 Freemarker,因此我想“重用”相同的配置。

已经有一个类似的问题用 Spring 做同样的事情。 Getting template text from FreeMarker in Spring app

我不知道从哪里开始。

我正在查看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;
    }
}

关于java - 从 Struts2 应用程序中的 FreeMarker 获取模板文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3985373/

相关文章:

java - 我无法从命令行启动 jetty,它需要 Main-Class list 属性

java - 为什么调用static final变量时static block 没有先执行

c++ - 在 C++11 中使用偏特化

struts2 - 在 Struts2/OGNL 中将整个单词大写

Java:重载 java.lang.Number 的(通用)方法

java - Idea 和 eclipse 对同一段代码返回不同的结果

c++ - 推断模板参数

c++ - 乘以 C++ 模板矩阵

liferay6 中的 Struts2+验证

java - 如何使用 Struts2 更改默认的 JSP/模板位置