widgetvar example jsf-2 primefaces

jsf 2 - example - ¿Qué hace la función PF en Primefaces?



primefaces widget editor (3)

En muchos lugares, uno puede encontrar el uso de una función PF con Primefaces. Por ejemplo en esta respuesta

Por lo que he visto hasta ahora, parece ser una función mágica de "haz que funcione un poco mejor". Pero no creo en este tipo de cosas, así que:

¿Qué hace esta función?

¿Y dónde puedo encontrar documentación al respecto?


La función PF es parte de la API de JavaScript de PrimeFaces. Busca un objeto JavaScript que sea la columna vertebral del componente JSF en el lado del cliente. Aquí está su definición ( fuente ):

PF = function(widgetVar) { var widgetInstance = PrimeFaces.widgets[widgetVar]; if (!widgetInstance) { PrimeFaces.error("Widget for var ''" + widgetVar + "'' not available!"); } return widgetInstance; };

PF es un atajo para PrimeFaces.widgets[''someWidgetId''] , que solo busca un objeto Javascript en el alcance global, por lo que el objeto Javascript también se puede recuperar usando la window[''someWidgetId''] .

La API de JavaScript de PrimeFaces no tiene documentación oficial en línea, por lo que para entender qué es lo que realmente "puede hacer" con el objeto Javascript, deberá hacer una profunda inmersión en PrimeFaces.

Ver también


Para otros usuarios de Primefaces que vienen aquí cuando actualicen a la versión 4.0 y superior, es posible evitar la necesidad de usar PF(''yourWidgetVar'').someFunction() y simplemente usar yourWidgetVar.someFunction() directamente como lo harían antes de la versión 4.0. Solo necesita la siguiente configuración en web.xml:

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

De la guía del usuario Primefaces:

Habilita el ámbito de la ventana para que se pueda acceder a los widgets usando widgetVar.method () además del enfoque de espacio de nombres PF predeterminado como PF (''widgetVar''). Method ().

Obviamente, usted sería susceptible al conflicto / contaminación del espacio de nombres para el que se creó esta función, pero es útil si desea migrar a una nueva versión en pequeños pasos y aislar las incompatibilidades que ha introducido la nueva versión.


PF es una función de Javascript.

En Primefaces 4.0 cambió el alcance de Javascript de los widgets. Antes de la versión 4.0, podía abrir un widget de diálogo con widgetVar.show(); .

En Primefaces 4.0 y superior, los widgets se almacenan en una matriz de widgets Javascript. Cuando llamas a PF (''widgetVar''), busca el widget en la matriz y lo devuelve.

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 };

No pude encontrar mucho sobre esto; esto es lo que pude descifrar usando las herramientas de desarrollo de Chrome.