我正在构建一个利用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这样的其他标签工作正常。
答案 0 :(得分:0)
如果ActionContext
可用,Struts标记正在运行。通常它是由Dispatcher
在准备操作中创建的。因此,应该映射struts2过滤器以接受在您的转发上调用的DispatcherType.FORWARD
个请求。您还可以通过JSP中的ActionContext.getContext()
获取操作上下文以进行调试。