¿Cómo encontrar un widgetVar?

Si tengo un componente Primefaces, como

<p:selectOneMenu id="myComponent"> ... </p:selectOneMenu> 

En el html, generará algo como esto:

 <div id="myFormName:myComponent" widgetVar="lollipop"> ...A lot of things in here... </div> <script id="myFormName:myComponent_s"> $(function(){PrimeFaces.cw('SelectOneMenu','lollipop',....... </script> 

Dentro de la label del script, puede observar el nombre del widget var (si no lo proporciono en el componente, se generará). Quiero saber cómo puedo get el elemento widget var, o si esto no es posible, cómo puedo get esa label "" para poder get el nombre de este widget var.

—— EDITAR —— Trataré de explicar por qué necesito esto. tengo esta function:

 function simulaTabManoBrow(event){ var focusedComponent=document.activeElement; if(event.keyCode==13){ //Cancel th edefault enter event(submit the form) event.preventDefault(); event.stopPropagation(); event.returnValue = false; event.cancelBubble = true; if((focusedComponent.tagName.toLowerCase()=="input" && focusedComponent.type.toLowerCase()=="button") || focusedComponent.tagName.toLowerCase()=="button"){ //If the focused component is a button, click the button. focusedComponent.click(); }else{ //Press the tab key progtwigtically $.emulateTab(); verifyOneMenu(campoFocado); } } } 

Esta function se ejecuta en el evento onkeydown del cuerpo. El objective de esto es replace el comportamiento pnetworkingeterminado de la tecla Intro por la tecla de tabulación. El único problema de esto es que cuando el componente enfocado es selectOneMenu y el usuario pulsa enter, se comporta correctamente como la tecla tab, pero se abre el selectOneMenu previamente enfocado (porque este es el comportamiento pnetworkingeterminado del componente).

Entonces, lo que estoy tratando de hacer es llamar al método close () del widget del widget selectOneMenu de ese componente previamente enfocado.

Puede get el object widgetVar por id usando esta práctica function:

Función

 function getWidgetVarById(id) { for (var propertyName in PrimeFaces.widgets) { if (PrimeFaces.widgets[propertyName].id === id) { return PrimeFaces.widgets[propertyName]; } } } 

Uso

 getWidgetVarById('myFormName:myComponent'); 

Ejemplo

 getWidgetVarById('dialogId').show(); 

Ver más:

  • Obtener widgetVar por Id
  • Introducción a PrimeFaces widgetVar

El algorithm para generar el widget var es bastante fácil:

  1. Tome la identificación del elemento
  2. Convierta los dos puntos : subraya _
  3. Añadir widget_ al inicio

Entonces, por ejemplo, si la identificación de su elemento es main:personal:age , el widget será widget_main_personal_age .

La identificación JSF del componente es la misma que el atributo id de la label html correspondiente.

En PrimeFaces 6.1 puede averiguar el widgetVar asignado por la siguiente regla. Es similar a los ejemplos que se muestran arriba, pero en versiones posteriores de PrimeFaces parecen include el id del formulario.

Por ejemplo:

 "widget_" + <form id> + "_form_" + <selectBooleanCheckbox id> 

Nota: En mi caso, los identificadores tienen guiones. Los guiones se convierten en guiones bajos. Como se muestra arriba, es probable que también sea la misma conversión de dos puntos.

Por ejemplo, tienes:

 <h:form id='my-page'> and <p:selectBooleanCheckbox id='the-checkboxes'> 

El widgetVar sería:

 "widget_my_page_form_the_checkboxes" 

Ver el origen de su página para verificarlo.

Ahora toma el object y dale un clic así …

 P('widget_my_page_form_the_checkbox').click();