在ftl文件中编写javascript

时间:2011-02-25 09:03:49

标签: java javascript

我有一个发送通知电子邮件的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} ....包含我要解析的网址。

提前致谢。

3 个答案:

答案 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

它具有解析这些变量的函数。希望它有用

感谢。