我有一个发送通知电子邮件的ftl文件。我需要改变这些邮件的主题。所以,到目前为止,我已设法更改主题并在其中传递URL。但我的要求是从URL传递一个特定的参数。我可以在这个文件里面写一个java scriplet或javascript函数吗?
以下是代码片段:
<@s.document "${emailDigestBean.containerHtmlUrl}">
<#if u.isHtml()>
<h1>${emailDigestBean.localizedText}</h1>
<#if emailDigestBean.briefDesc??>
<p id="message">${emailDigestBean.briefDesc}</p>
<p>Added By Me:${emailDigestBean.containerHtmlUrl}</p>
</#if>
$ {emailDigestBean.containerHtmlUrl} ....包含我要解析的网址。
提前致谢。
答案 0 :(得分:0)
我不知道你的设置是什么。你是如何生成Freemarker模板的?它是从Servlet调用的吗?
我认为我的偏好是在传递参数之前解析URL,即在Java代码而不是模板代码中进行。 Servlet API已经解析了任何查询字符串,如果你正在使用它,那么就不需要再做了。
例如,您的代码可能如下所示:
Map params = new HashMap();
params.put("emailDigestBean", emailDigestBean);
FreemarkerTemplateUtils.processTemplateIntoString(freemarkerConfig.getTemplate("template.ftl",params);
假设这是从servlet中调用的,你可以添加:
params.put("param", request.getParameter("paramName"));
然后在您的模板中,您可以使用$ {param}或任何您称之为的方式访问它。
答案 1 :(得分:0)
正如phil指出的那样,除非我们知道设置,否则无法回答这个问题。 Freemarker模板(ftl)由freemarker引擎处理以产生文本输出。在处理过程中,引擎可以访问模板可以引用的一些数据(通常是数据映射)。代码中的所有$.....
内容都是对数据的引用。
要解决您的问题,您需要访问ftl中的新数据。所以有人必须首先把它放在袋子里然后你可以改变ftl来访问它。查看您的设置,找出谁在数据映射中添加内容。如果那是不可能的,那么看看你是否可以将它作为一个属性添加到已经存在于包中的bean中(emailDigestBean已经在包中)。
答案 2 :(得分:0)
我找到了解决方法。这是链接
http://freemarker.sourceforge.net/docs/ref_builtins_string.html#ref_builtin_index_of
它具有解析这些变量的函数。希望它有用
感谢。