【发布时间】:2014-07-31 12:28:52
【问题描述】:
我有一个设置会话属性A 和B 的操作类。我知道价值观是存在的,但它们不是null。
在 Freemarker 模板中,我尝试使用以下表达式获取这些值
<#if session.A?exists>
${session.A}
</#if>
或
<@s.property value="%{#session.A}" />
在得到以下错误,
<#if session.A?exists> Expression session is undefined on line 39
据我所知 Freemarker Struts2 ,我们不需要做任何额外的设置,因为 Freemarker 的 jar 与 Struts2 捆绑在一起,我认为 Freemarker 将可以访问值堆栈,但似乎我在这里弄错了.有人可以看看我错过了什么吗?我在 S2 2.15.3
以下是附加代码,在动作类中,我向会话对象添加值,
sessionMap.put("A", A);
sessionMap.put("B", B);
System.out.println("Inside loop test 2!");
String[] args = null;
SendEmail.main(args);
return "success";
现在 sendEmail 类包含 freemarker 配置,
Configuration cfg = new Configuration();
cfg.setClassForTemplateLoading(SendEmail.class, "");
Template template = cfg.getTemplate("SendEmail.ftl");
Map<String,String> rootMap = new HashMap<>();
Writer out = new StringWriter();
try {
template.process(rootMap, out);
} catch (TemplateException | IOException templateException) {
logger.error("Freemarker Template processing exception", templateException);
}
body.setContent(out.toString(), "text/html");
Multipart multipart = new MimeMultipart();
multipart.addBodyPart(body);
message.setContent(multipart, "text/html");
Transport.send(message);
会话映射声明为
private Map<String, Object> sessionMap;
【问题讨论】:
标签: java email struts2 freemarker