在ftl文件中写入javascript

zrfyljdw  于 2023-02-21  发布在  Java
关注(0)|答案(3)|浏览(257)

我有一个发送通知邮件的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。
先谢了。

iovurdzv

iovurdzv1#

我不知道你的设置是什么。你是如何生成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}或其他名称访问它。

r55awzrz

r55awzrz2#

正如phil在下面指出的,除非我们知道设置,否则这个问题是无法回答的。freemarker模板(ftl)由freemarker引擎处理以产生文本输出。在处理过程中,引擎将访问一些可以被模板引用的数据(通常是数据的Map)。代码中所有的$.....都是对数据的引用。
为了解决你的问题,你需要在ftl中访问一个新的数据。所以必须有人先把它放到包中,然后你才能改变ftl来访问它。检查你的设置,找出是谁在向数据Map中添加东西。如果这不可能,那么看看你是否可以把它作为属性添加到包中已经存在的bean中(emailDigestBean已经在包中了)。

vq8itlhq

vq8itlhq3#

我找到了一个解决办法。这是链接
http://freemarker.sourceforge.net/docs/ref_builtins_string.html#ref_builtin_index_of
它有解析这些变量的函数。希望对大家有所帮助
谢谢。

相关问题