将FreeMarker与Apache Sling一起使用

Luc*_*ano 3 freemarker scriptengine sling aem

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

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

ant*_*nyh 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版本之间存在冲突(我没有'挖掘找出问题所在)
  3. 构建它并安装它,它应该出现在捆绑包下的Sling控制台和"脚本引擎"页面中,现在让你使用.ftl脚本.

我通过在CQ5中创建捆绑包,导入代码并将库存freemarker.jar添加到捆绑包中稍微不同,但这应该也可以,因为它基本上是相同的.

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