IBM (リンク)のガイドに従って、XPage で独自の Java カスタム コントロールを開発しようとしています。
すべて正常に動作しますが、jQuery ライブラリを使用するクライアント側の JavaScript を実行したいと考えています。XPage に jQuery.js を含めることは大したことではありませんが、自社のすべての開発者が使用できるように、コントロールをライブラリにパックしたいと考えています。
したがって、私の質問は、JavaScript をコントロールに統合して、それを使用する人がノーツ アプリケーションで JavaScript を手動で実装する必要がないようにする方法です。
確かに、私はそれをレンダリングに入れることができました:
writer.startElement("script", null);
writer.writeAttribute("type", "text/javascript", null);
writer.writeText(JQuery-js-content, null);
writer.endElement("script");
ただし、ユーザーがコントロールを含む XPage を開くと、サーバーは常にそれをレンダリングする必要があります。
Web またはサーバーから jQuery をロードすることはできません (ファイアウォール)。
私が探しているのは、開発者がパネルからコンポーネントをドラッグすると、jQuery が Notes アプリケーションに追加されるたびに解決策になります。
アップデート:
ヒントのおかげで、「私にとって最高の」ソリューションが見つかりました。ExtLibResources
拡張ライブラリのクラスを使用しcom.ibm.xsp.extlib.resources.ExtLibResources
て、スクリプトライブラリを含めました。この方法を使用すると、同じ XPage で複数のコントロールを使用するときに、それらが何度も含まれることはありません。
拡張ライブラリを使用したくないが、このメソッドを使用してカスタム コントロールに CSJS を含めたい場合は、独自のリソース クラスを構築するだけです。
jQueryを含めるコードは次のようになります。
ScriptResource jquerymin = new ScriptResource();
jquerymin.setType("text/javascript");
jquerymin.setSrc(JQUERY_PATH);
jquerymin.setClientSide(true);
ExtLibResources.addEncodeResource(context, jquerymin);