PF功能在Primefaces中有什么作用?

Jen*_*der 32 primefaces jsf-2

在许多地方,人们可以找到使用PFPrimefaces 的函数.例如在这个答案中

从我到目前为止所看到的,它似乎是一种神奇的"让它工作得更好"的功能.但我不相信这种东西:

这个功能有什么作用?

我在哪里可以找到有关它的文档?

Mar*_*ark 20

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
};
Run Code Online (Sandbox Code Playgroud)

我在这方面找不到多少,这也是我能够使用Chrome的开发者工具解密的.


Dav*_*idS 15

PF函数是PrimeFaces的JavaScript API的一部分.它查找Javascript对象,它是客户端JSF组件的主干.这是它的定义(来源):

PF = function(widgetVar) {      
        var widgetInstance = PrimeFaces.widgets[widgetVar];

        if (!widgetInstance) {
            PrimeFaces.error("Widget for var '" + widgetVar + "' not available!");
        }

        return widgetInstance;
    };
Run Code Online (Sandbox Code Playgroud)

PF是一个快捷方式PrimeFaces.widgets['someWidgetId'],它只是在全局范围内查找Javascript对象,因此也可以使用查找Javascript对象window['someWidgetId'].

PrimeFaces的Javascript API没有在线的官方文档,因此要了解您可以使用Javascript对象真正"做"的事情,您需要深入了解PrimeFaces.

也可以看看


Rya*_*tts 9

对于升级到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>
Run Code Online (Sandbox Code Playgroud)

从Primefaces用户指南:

启用窗口范围,以便除了PF('widgetVar')方法()之外的默认PF命名空间方法,还可以使用widgetVar.method()访问窗口小部件.

显然,你很容易受到命名空间冲突/污染的影响,而这个功能是为了避免这个功能而产生的,但是如果你想以很小的步骤迁移到新版本并隔离新版本引入的不兼容性,它就很有用.