Apacheスリングでフリーマーカーを使用します
-
26-10-2019 - |
質問
Apache Slingが下にあるコンテンツリポジトリ(Adobe CQ5)を使用しています。 JSPの代わりにFreeMarkerを使用してWebページをレンダリングしたいと思います。
そのためには、Sling Sourceコードの貢献部分にあるOSGI Freemarker拡張機能をスリングにアップロードする必要がありますか、それともFreeMarkerのOSGIバージョンをアップロードする必要がありますか?両方のJARSがインターフェイスjavax.script.scriptengineFactoryを実装するので、どちらを使用するか、または両方をアップロードするかわかりません。
解決
以下を実行することで、FreemarkerをCQ5.3に取り組むことができました。
- SVNチェックアウトからソースを取得します http://svn.apache.org/repos/asf/sling/trunk スリング
- contrib/scripting/freemarkerに移動し、freemarkerscriptengine.javaからすべてのロギングおよびslf4j参照を削除します - ノクラスデフェスエクセプションのために500エラーをスローします-CQ5とFreemarkerに含まれるSLF4Jのバージョンとの間に矛盾があると思います(私はDid'n 'Did'n'何が悪いのかを調べるために掘ります)
- それを構築してインストールすると、バンドルの下のスリングコンソールと「スクリプトエンジン」ページに表示され、.ftlスクリプトを今すぐ使用できます。
CQ5内にバンドルを作成し、コードをインポートし、ストックFreeMarker.jarをバンドルに追加することで、少し違った方法で行いましたが、これは基本的に同じものであるため、これも機能するはずです。
私が抱えていた問題は、スクリプトエンジンがリストされているが、ロギングが実行されないということでした。そのため、エンジンからlog&slf4jを削除する必要があります。
他のヒント
私はについて知りません FreemarkerのOSGIバージョン;私たちは、特にスリング用のフリーマーカーの独自のバンドルを作成しました。を使用して成功した場合 FreemarkerのOSGIバージョン 我々に教えてください ;-)
テストは簡単です:Webコンソールにバンドルをインストールし、Webコンソールでサポートされているスクリプトエンジンを確認するだけです 構成ステータス. 。そこにリストされているフリーマーカーエンジンが表示されている場合は、機能するはずです。