我正在尝试按照 IBM ( LINK ) 上的指南在 XPage 中开发我自己的 Java 自定义控件。
一切正常,但现在我想做一些我想使用 jQuery 库的客户端 JavaScript 事情。在 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 应用程序的面板中拖动时,我正在寻找的解决方案。
更新:
感谢您的提示,我找到了“最适合我”的解决方案。我使用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);