Primefaces - 用于var的Datatable Widget ...不可用

时间:2014-04-08 06:10:05

标签: javascript primefaces datatable widget

我在我的应用程序中使用了primefaces 4.0和jsf 2.2。我创建了一个页面,其中数据表嵌套在tabview中。现在,当我想过滤数据表时,它会继续加载,而不是结果。

经过一段时间我认识到,javascript引发了以下错误:“var'测试'小部件'不可用!”

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

最诚挚的问候!

3 个答案:

答案 0 :(得分:3)

如果没有发布代码,就无法说出来。但是,我可以建议您寻找一些事项。

  1. 检查视图中是否有重复的小部件名称。 显然你不会从你得到的信息中直觉,但我 回想起过去为重复的小部件获取相同的消息 名称
  2. 检查您是否有一个组件,其中您给出的widget名称与ID相同。我读过这是要避免的。

  3. 一个非常常见的错误是混淆ID和窗口小部件名称。那 是,您正在尝试将ID用作窗口小部件

  4. 请参阅代码中的内容,尝试引用“test”

  5. 我自己无法确认,但我已经看到其他StackOverflow帖子,表明在导入jQuery库的两个副本时可能会出现此错误

答案 1 :(得分:1)

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

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

这是我最初的尝试:

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

它看起来很好,但是没有用。直到我在Chrome控制台Widget for var 'dtWidgetVar' not available!中发现错误并在Google上搜索了几个小时,最后我找到了this thread。因此,我添加$(function(){});来包装我的脚本如下:

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

BOOM!,终于有效了。从here以及here两者都说明$(function(){});$(document).ready(function(){});实际上是相同的,所以我也不知道它为什么会起作用。我也尝试只使用$(function(){});,但它不起作用。必须使用这两个功能才能使其工作,至少在我的情况下。但是,我希望这有助于一些人类!抱歉我的英语不好。

答案 2 :(得分:0)

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