我在我的应用程序中使用了primefaces 4.0和jsf 2.2。我创建了一个页面,其中数据表嵌套在tabview中。现在,当我想过滤数据表时,它会继续加载,而不是结果。
经过一段时间我认识到,javascript引发了以下错误:“var'测试'小部件'不可用!”。
我想这应该是问题,但是问题是什么或我如何解决这个问题?有没有人有想法?
最诚挚的问候!
答案 0 :(得分:3)
如果没有发布代码,就无法说出来。但是,我可以建议您寻找一些事项。
检查您是否有一个组件,其中您给出的widget名称与ID相同。我读过这是要避免的。
一个非常常见的错误是混淆ID和窗口小部件名称。那 是,您正在尝试将ID用作窗口小部件
请参阅代码中的内容,尝试引用“test”
答案 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
放在该小组组之外来避免此问题。