Primefaces 中的 PF 功能有啥作用?
Posted
技术标签:
【中文标题】Primefaces 中的 PF 功能有啥作用?【英文标题】:What does the PF function do in Primefaces?Primefaces 中的 PF 功能有什么作用? 【发布时间】:2014-07-03 23:13:00 【问题描述】:在很多地方都可以找到函数PF
与 Primefaces 的用法。例如在这个answer
从我目前看到的情况来看,这似乎是一个神奇的“让它工作得更好”的功能。但我不相信这种东西所以:
这个函数有什么作用?
我在哪里可以找到有关它的文档?
【问题讨论】:
哇,好问题,我为什么没想到……:O 【参考方案1】:PF
是一个 javascript 函数。
在 Primefaces 4.0 中,小部件的 Javascript 范围发生了变化。在 4.0 版之前,您可以使用 widgetVar.show();
打开一个对话框小部件。
在 Primefaces 4.0 及更高版本中,小部件存储在 Javascript 小部件数组中。当您调用 PF('widgetVar') 时,它会在数组中查找小部件并返回它。
PF=function(d)
var c=b.widgets[d];
if(!c)
if(a.console&&console.log)
console.log("Widget for var '"+d+"' not available!")
b.error("Widget for var '"+d+"' not available!")
return c
;
我在这方面找不到太多信息,这也是我使用 Chrome 的开发人员工具能够破译的内容。
【讨论】:
【参考方案2】:PF
函数是 PrimeFaces 的 JavaScript API 的一部分。它在客户端查找一个 Javascript 对象,该对象是 JSF 组件的主干。这是它的定义(source):
PF = function(widgetVar)
var widgetInstance = PrimeFaces.widgets[widgetVar];
if (!widgetInstance)
PrimeFaces.error("Widget for var '" + widgetVar + "' not available!");
return widgetInstance;
;
PF
是PrimeFaces.widgets['someWidgetId']
的快捷方式,它只是在全局范围内查找Javascript对象,因此也可以使用window['someWidgetId']
检索Javascript对象。
PrimeFaces 的 Javascript API 没有在线官方文档,因此要了解您可以使用 Javascript 对象真正“做什么”,您需要深入了解 PrimeFaces。
另见
"Intro To PrimeFaces widgetVar" blog post PrimeFaces source code【讨论】:
我不确定这是否会增加 Mark 所说的内容,但我会留给你决定。 Imo 确实如此。更好的参考,因此我的赞成票(使用浏览器开发工具解密一个开源项目;-))但你最好将源的引用更改为 github,因为它们最近移动了【参考方案3】:对于其他在升级到 4.0 及更高版本时来到这里的 Primefaces 用户,可以绕过使用 PF('yourWidgetVar').someFunction()
的需要,直接使用 yourWidgetVar.someFunction()
,就像在版本 4.0 之前一样。您只需要在 web.xml 中进行以下配置:
<context-param>
<param-name>primefaces.LEGACY_WIDGET_NAMESPACE</param-name>
<param-value>true</param-value>
</context-param>
来自 Primefaces 用户指南:
启用窗口范围,以便可以使用以下方式访问小部件 widgetVar.method() 除了默认的 PF 命名空间方法,如 PF('widgetVar').method().
显然,创建此功能是为了避免命名空间冲突/污染,但如果您想通过小步骤迁移到新版本并隔离新版本引入的不兼容性,它会很有用。
【讨论】:
太棒了!当我的项目时间紧迫时,这使我免于更新我的整个代码库!谢谢以上是关于Primefaces 中的 PF 功能有啥作用?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用p:selectBooleanCheckbox切换禁用/启用PrimeFaces组件
<p:gmap 组件的绑定不起作用 - Primefaces 3.4.1