Primefaces - 用于变量的数据表小部件 ..不可用

Primefaces - Datatable Widget for var ... not available

本文关键字:小部 数据表 用于 变量 Primefaces      更新时间:2023-09-26

我在应用程序中使用了primefaces 4.0和jsf 2.2。我创建了一个页面,其中数据表嵌套在选项卡视图中。现在,当我想过滤数据表时,它会继续加载并且不会产生结果。

一段时间后,我意识到,javascript抛出以下错误:"用于var'test'的小部件不可用!

我想这应该是问题所在,但是问题是什么或我该如何解决这个问题?有人有想法吗?

此致敬意!

我在这里发布我的答案,希望可以帮助那里的一些人。

我有同样的问题。我的情况是我想为我的<p:dataTable>执行默认过滤器,因此,我必须在页面加载时在javascript中执行PF('dtWidgetVar').filter();脚本。

这是我最初的尝试:

$(document).ready(function() 
{
    PF('dtWidgetVar').filter();
});

它看起来很好,但就是不起作用。直到我在Chrome控制台中找到错误 Widget for var 'dtWidgetVar' not available! ,并在谷歌上搜索了几个小时,终于我找到了这个线程。因此,我添加一个$(function(){});来包装我的脚本,如下所示:

$(document).ready(function() 
{
    $(function()
    {
        PF('dtWidgetVar').filter();
    });
});

轰!,终于成功了。从这里和这里都说$(function(){});$(document).ready(function(){});实际上是相同的,所以我也不知道它为什么有效。我也尝试只使用$(function(){});但它不起作用。必须同时使用这两个函数才能使其工作,至少就我而言。但是,我仍然希望这对某些人有所帮助!对不起,我的英语不好。

在没有发布代码的情况下,不可能说。 但是,我可以建议寻找几件事。

  1. 检查视图中是否有重复的小部件名称。显然你不会从你得到的信息中直觉到这一点,但我回想一下,过去收到重复小部件的相同消息名字
  2. 检查是否有一个组件,其中您为小部件变量指定了与 ID 相同的名称。 我读过这是要避免的。

  3. 一个非常常见的错误是将 ID 和小部件名称混为一谈。 那是,您正在尝试使用 ID 作为小部件变量

  4. 查看代码中尝试引用"测试"的内容

  5. 我自己无法确认这一点,但我看到其他 StackOverflow 帖子表明,当您导入了 jQuery 库的两个副本时,这可能是一个错误

我在p:commandButton中使用p:ajax update="@all"时遇到过Widget for var '[widgetVar]' not available。我可以通过将要更新的内容放在我在update中引用的h:panelGroup中并将声明widgetVar的元素放在该面板组之外来避免此问题。