根据给定的 Liferay 版本 L7 GA4,
按着这些次序:
打开控制面板,导航到配置 → 系统设置。
单击 Foundation 选项卡下的 JavaScript Loader。
取消选中公开全局选项。
参考链接- https://help.liferay.com/hc/en-us/articles/360018161931-Using-External-Libraries-#using-libraries-that-you-host
此外,我使用 L7.1 和 L7.2 的 Liferay 版本还有一些替代的第二种解决方案
下面的代码,我在我的模块项目中添加
@Component(immediate = true, service = DynamicInclude.class)
public class JSTopHeadDynamicInclude extends BaseDynamicInclude {
@Override
public void include(
HttpServletRequest request, HttpServletResponse response,
String key)
throws IOException {
PrintWriter printWriter = response.getWriter();
String content = "<script src=\"/o/my-custom-dynamic-include/jquery.jscrollpane.min.js\" />";
content += "<script src=\"/o/my-custom-dynamic-include/jquery.mousewheel.js\" />";
content += "<script src=\"/o/my-custom-dynamic-include/common.js\" />";
printWriter.println(content);
}
@Override
public void register(
DynamicInclude.DynamicIncludeRegistry dynamicIncludeRegistry) {
dynamicIncludeRegistry.register(
"/html/common/themes/top_js.jspf#resources"
);
}
}
如果“js”文件夹不存在,您可以将这些 js 文件添加到您的 OSGI 模块位置,然后您可以创建并添加您的 js 文件。
**src/main/resource/META-INF/resources/js/**
此外,您应该在 BND.BND 文件中为模块注册 Web-ContextPath
**Web-ContextPath: /my-custom-dynamic-include**
参考链接- https://help.liferay.com/hc/en-us/articles/360018165751-Top-JS-Dynamic-Include
我正在使用第二种解决方案。- 工作正常。