web-dev-qa-db-ja.com

PrimefacesでPF関数は何をしますか?

多くの場所で、Primefacesで関数PFの使用法を見つけることができます。たとえば、この例では answer

私がこれまでに見てきたことから、それは魔法の「少しうまく動作させる」機能のようです。しかし、私はこの種のものを信じていません。

この機能は何をしますか?

そして、それに関するドキュメントはどこにありますか?

31
Jens Schauder

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の開発者ツールを使用して解読できたものです。

19
Mark

PF関数は、PrimeFacesのJavaScript APIの一部です。クライアント側のJSFコンポーネントのバックボーンであるJavascriptオブジェクトを検索します。定義は次のとおりです( source ):

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

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

        return widgetInstance;
    };

PFPrimeFaces.widgets['someWidgetId']のショートカットです。グローバルスコープでJavascriptオブジェクトをルックアップするだけなので、window['someWidgetId']を使用してJavascriptオブジェクトを取得することもできます。

PrimeFacesのJavascript APIには公式のオンラインドキュメントがないため、Javascriptオブジェクトで実際に「できる」ことを理解するには、PrimeFacesを深く掘り下げる必要があります。

こちらもご覧ください

15
DavidS

バージョン4.0以降にアップグレードするときにここに来る他のPrimefacesユーザーの場合、PF('yourWidgetVar').someFunction()を使用する必要性をバイパスし、バージョン4.0以前のようにyourWidgetVar.someFunction()を直接使用することができます。 web.xmlに次の設定が必要です。

<context-param>
    <param-name>primefaces.LEGACY_WIDGET_NAMESPACE</param-name>
    <param-value>true</param-value>
</context-param>

Primefacesユーザーガイドから:

PF( 'widgetVar')。method()などのデフォルトのPF名前空間アプローチに加えて、widgetVar.method()を使用してウィジェットにアクセスできるように、ウィンドウスコープを有効にします。

明らかに、この機能は回避するために作成された名前空間の衝突/汚染の影響を受けやすくなりますが、小さなバージョンで新しいバージョンに移行し、新しいバージョンが導入した非互換性を特定する場合に役立ちます。

8
Ryan Bennetts