在自定义JSP模板中使用Struts 2 taglib实现邮件模板

时间:2014-05-12 17:40:38

标签: java jsp struts2

我正在构建一个利用Struts2作为主要框架的应用程序,但其中一个要求是应用程序发送自动发送的电子邮件。

由于Struts2在实现邮件模板方面没有包含很多有用的帮助,我决定只使用普通的JSP,如下所示:

public static String parseJSPTemplate(String jspPath, HttpServletRequest req) throws ServletException, IOException {
    RequestDispatcher jsp = req.getRequestDispatcher(jspPath);
    EmailTemplateHandler tpl = new EmailTemplateHandler();
    jsp.forward(req, tpl);
    return tpl.toString();
}

因此,它以正常方式处理JSP并返回输出的字符串表示,并替换变量等。

一个人认为包括Struts2 taglib(例如<%@ taglib prefix="s" uri="/struts-tags" %>)将允许使用像<s:url />这样的标签;但是,似乎情况并非如此。相反,调用taglib的结果是空白的。没有显示错误,也没有抛出异常。

我的猜测是,在Struts2正确响应呼叫之前需要将其他内容注入到请求中,但我不确定这是什么。

任何人都知道如何让这个工作?像JSTL-core这样的其他标签工作正常。

1 个答案:

答案 0 :(得分:0)

如果ActionContext可用,Struts标记正在运行。通常它是由Dispatcher在准备操作中创建的。因此,应该映射struts2过滤器以接受在您的转发上调用的DispatcherType.FORWARD个请求。您还可以通过JSP中的ActionContext.getContext()获取操作上下文以进行调试。