多くの場所で、Primefacesで関数PF
の使用法を見つけることができます。たとえば、この例では answer
私がこれまでに見てきたことから、それは魔法の「少しうまく動作させる」機能のようです。しかし、私はこの種のものを信じていません。
この機能は何をしますか?
そして、それに関するドキュメントはどこにありますか?
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の開発者ツールを使用して解読できたものです。
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;
};
PF
はPrimeFaces.widgets['someWidgetId']
のショートカットです。グローバルスコープでJavascriptオブジェクトをルックアップするだけなので、window['someWidgetId']
を使用してJavascriptオブジェクトを取得することもできます。
PrimeFacesのJavascript APIには公式のオンラインドキュメントがないため、Javascriptオブジェクトで実際に「できる」ことを理解するには、PrimeFacesを深く掘り下げる必要があります。
バージョン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()を使用してウィジェットにアクセスできるように、ウィンドウスコープを有効にします。
明らかに、この機能は回避するために作成された名前空間の衝突/汚染の影響を受けやすくなりますが、小さなバージョンで新しいバージョンに移行し、新しいバージョンが導入した非互換性を特定する場合に役立ちます。