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

问题描述 投票:0回答:1

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

由于 Struts 2 在实现邮件模板方面没有太多开箱即用的帮助,我决定只使用普通的 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,并返回输出的字符串表示形式,并替换变量等。

有人会认为,通常包含 Struts 2 标签库(例如

<%@ taglib prefix="s" uri="/struts-tags" %>
)将允许使用像
<s:url />
;

这样的标签

然而,事实似乎并非如此。相反,调用

taglib
的结果是空白的。不显示错误,也不抛出异常。

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

有人知道如何让它发挥作用吗?其他

taglib
如 JSTL 核心工作正常。

java email jsp struts2 struts-tags
1个回答
0
投票
如果

ActionContext

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

© www.soinside.com 2019 - 2024. All rights reserved.