【问题标题】:Using FreeMarker with Apache Sling将 FreeMarker 与 Apache Sling 一起使用
【发布时间】:2011-09-12 16:04:04
【问题描述】:

我正在使用下面有 Apache Sling 的内容存储库 (Adobe CQ5)。我想使用 FreeMarker 而不是 JSP 来呈现网页。

为此,我应该将 OSGi Freemarker 扩展上传到 Sling(可在 Sling 源代码的贡献部分中找到),还是应该上传 OSGi 版本的 Freemarker?两个 jar 都实现了接口 javax.script.ScriptEngineFactory 所以我不知道使用哪一个,或者两个都上传。

【问题讨论】:

    标签: freemarker scriptengine sling aem


    【解决方案1】:

    通过执行以下操作,我设法让 Freemarker 在 CQ5.3 上工作:

    1. 从svn checkouthttp://svn.apache.org/repos/asf/sling/trunksling获取源码
    2. 转到 contrib/scripting/freemarker 并从 FreemarkerScriptEngine.java 中删除所有日志记录和 slf4j 引用 - 由于 NoClassDefFoundException,它会引发 500 错误 - 我认为 CQ5 和 Freemarker 中包含的 slf4j 版本之间存在冲突(我没有挖掘来找出问题所在)
    3. 构建并安装它,它应该出现在 Sling 控制台中的 bundles 下和“脚本引擎”页面中,让您现在可以使用 .ftl 脚本。

    我通过在 CQ5 中创建捆绑包、导入代码并将股票 freemarker.jar 添加到捆绑包中的做法略有不同,但这应该也可以工作,因为它基本上是相同的。

    我遇到的问题是脚本引擎确实被列出,但日志记录阻止它运行,这就是您需要从引擎中删除日志和 slf4j 的原因。

    【讨论】:

      【解决方案2】:

      我不知道 Freemarker 的 OSGi 版本;我们专门为 Sling 创建了自己的 Freemarker 捆绑包。如果您成功使用了 OSGi 版本的 Freemarker,请告诉我们 ;-)

      测试很简单:只需通过 Web 控制台安装捆绑包并在 Web 控制台中检查支持的脚本引擎配置状态。如果您看到此处列出的 Freemarker 引擎,它应该可以工作。

      【讨论】:

        猜你喜欢
        • 2021-08-08
        • 1970-01-01
        • 1970-01-01
        • 2012-10-04
        • 2020-01-17
        • 2012-04-26
        • 2012-07-21
        • 2022-01-15
        • 1970-01-01
        相关资源
        最近更新 更多