Java DataTable不是Liferay 7上的函数

Java DataTable不是Liferay 7上的函数,java,jquery,web-applications,datatable,liferay,Java,Jquery,Web Applications,Datatable,Liferay,这是我在liferay上的当前代码: 我没有导入任何jquery引用,因为默认情况下,它在liferay 7中已经使用jquery函数进行了测试,所以我只是将datatable CDN复制到我的liferay中 但是它说datatable不是一个函数..我会错误地引用datatables吗?不太可能,否则我需要再次引用jQuery?尝试过,但可能会引起冲突 p/s相同的代码能够在JSFIDLE上运行并显示数据表 要使用此jQuery插件,您需要停用Liferay JS加载程序,如下所述: 在您的

这是我在liferay上的当前代码:

我没有导入任何jquery引用,因为默认情况下,它在liferay 7中已经使用jquery函数进行了测试,所以我只是将datatable CDN复制到我的liferay中

但是它说datatable不是一个函数..我会错误地引用datatables吗?不太可能,否则我需要再次引用jQuery?尝试过,但可能会引起冲突

p/s相同的代码能够在JSFIDLE上运行并显示数据表

要使用此jQuery插件,您需要停用Liferay JS加载程序,如下所述:

在您的情况下,导入DataTables JS的代码可以是:

<script>
    Liferay.Loader.define._amd = Liferay.Loader.define.amd;
    Liferay.Loader.define.amd = false;
</script>
<script type="text/javascript" charset="utf8" src="https://cdn.datatables.net/1.10.19/js/jquery.dataTables.js"></script>
<script>
    Liferay.Loader.define.amd = Liferay.Loader.define._amd;
</script>

您应该在portal_normal.ftl文件的自定义主题底部添加上面的代码段,就在body closing标记之前。

Liferay 7.0 DXP使用AMD加载程序加载javascript文件

如果您正在加载相互依赖的js模块,则需要禁用它

有很多方法可以做到这一点

7.0 DXP SP2+或Liferay 7.0 CE GA4的配置+ 您可以简单地打开管理侧栏并选择“控制面板>配置>系统设置>基础> JavaScript加载器>取消检查ExpEngullo.< /P> 来自代码

<script>
   Liferay.Loader.define._amd = Liferay.Loader.define.amd;
   Liferay.Loader.define.amd = false;
</script>
 <script type="text/javascript" charset="utf8" src="https://cdn.datatables.net/1.10.19/js/jquery.dataTables.js"></script>
 <script>
     Liferay.Loader.define.amd = Liferay.Loader.define._amd;
 </script>
致:


你在哪里加这些?我在现有代码的基础上添加了一些代码,但仍然不起作用。@Liferayer,我刚刚更新了我的答案,精确到这一点。我已经按照要求将代码片段添加到portal_normal中,并删除了我在原始代码中的现有导入,但仍然无法显示datatable…我是否遗漏了一些步骤,如重新启动服务器等,因为portal_normal是服务器文件的一部分???您只需要重新部署您的数据库自定义主题项目,您刚刚在其中添加了代码段和自定义portlet,我假定您的HTML位于其中。现在结果如何?你看到了什么?控制台上打印了什么错误?同样的问题…Datatable不是函数。。添加代码片段后,我重新部署了所有内容。。
<script>
   Liferay.Loader.define._amd = Liferay.Loader.define.amd;
   Liferay.Loader.define.amd = false;
</script>
 <script type="text/javascript" charset="utf8" src="https://cdn.datatables.net/1.10.19/js/jquery.dataTables.js"></script>
 <script>
     Liferay.Loader.define.amd = Liferay.Loader.define._amd;
 </script>
<script>
     define._amd = define.amd;
     define.amd = false;
 </script>
 <script type="text/javascript" charset="utf8" src="https://cdn.datatables.net/1.10.19/js/jquery.dataTables.js"></script>
 <script>
     define.amd = define._amd;
 </script>
typeof define == 'function'
false && typeof define == 'function'