我有一个发送通知邮件的ftl文件。我需要更改这些邮件的主题行。到目前为止,我已经成功地更改了主题并在其中传递了一个URL。但我的要求是从URL传递一个特定的参数。我可以在此文件中编写java脚本或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} ....包含我要解析的URL。
先谢了。
3条答案
按热度按时间iovurdzv1#
我不知道你的设置是什么。你是如何生成Freemarker模板的?它是从Servlet调用的吗?
我想我的偏好是在传递参数之前解析URL,即用Java代码而不是模板代码来解析。Servlet API已经解析了任何查询字符串,如果这是您正在使用的字符串,因此不需要再次解析。
例如,您的代码可能类似于:
假设这是从servlet内部调用的,您可以添加:
然后,您可以在模板中使用${param}或其他名称访问它。
r55awzrz2#
正如phil在下面指出的,除非我们知道设置,否则这个问题是无法回答的。freemarker模板(ftl)由freemarker引擎处理以产生文本输出。在处理过程中,引擎将访问一些可以被模板引用的数据(通常是数据的Map)。代码中所有的
$.....
都是对数据的引用。为了解决你的问题,你需要在ftl中访问一个新的数据。所以必须有人先把它放到包中,然后你才能改变ftl来访问它。检查你的设置,找出是谁在向数据Map中添加东西。如果这不可能,那么看看你是否可以把它作为属性添加到包中已经存在的bean中(emailDigestBean已经在包中了)。
vq8itlhq3#
我找到了一个解决办法。这是链接
http://freemarker.sourceforge.net/docs/ref_builtins_string.html#ref_builtin_index_of
它有解析这些变量的函数。希望对大家有所帮助
谢谢。