我正在尝试按照IBM (LINK)的指南在XPage中开发我自己的Java自定义控件。
一切都很好,但现在我想做一些客户端JavaScript的事情,我想使用jQuery库。在XPage中包含jQuery.js并不是什么了不起的事情,但是我想把我的控件打包到一个库中,这样我们公司的每个开发人员都可以使用它。
所以我的问题是我如何将JavaScript集成到控件中,以便使用它的人不必在Notes应用程序中手动实现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应用程序中。
更新:
谢谢你的提示,我找到了"最适合我"的解决方案。我使用扩展库com.ibm.xsp.extlib.resources.ExtLibResources
中的ExtLibResources
类来包含我的脚本库。使用此方法,当您在同一个XPage上使用多个控件时,它们不会被包含多次。
如果你不想使用扩展库,但你想使用这个方法在你的自定义控件中包含一个CSJS,你可以构建你自己的资源类。
现在我的代码包含jQuery看起来像这样:
ScriptResource jquerymin = new ScriptResource();
jquerymin.setType("text/javascript");
jquerymin.setSrc(JQUERY_PATH);
jquerymin.setClientSide(true);
ExtLibResources.addEncodeResource(context, jquerymin);
在OpenNTF上查看这个项目。jQuery Ext. Library。我猜这就是你需要做的。
http://www.openntf.org/internal/home.nsf/project.xsp?action=openDocument& name = jQuery % 20扩展% 20图书馆
与其自己添加库,不如使用CDN添加jquery库?