3

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

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

4

2 回答 2

5

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

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

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

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

于 2012-01-05T14:12:16.550 回答
2

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

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

于 2011-09-23T09:30:27.060 回答