llamada ajax en jsf 2.0 (myfaces), se llama a la function onevent Javascript en la label ajax antes de que se complete la renderización

Esta es la primera vez que hago una pregunta en un foro, ya que generalmente mis preguntas ya han sido formuladas y respondidas. No he encontrado una respuesta a este problema que me funcione, así que aquí va:

Estoy haciendo una llamada Ajax en JSF 2.0 de esta manera:

< f :ajax listener="#{myReferenceController.clearRequinetworkingReferenceNumber}" onevent="resetFocus" execute="@form" render=":resultsForm:ResultsDisplay" /> 

Todo en el oyente funciona perfectamente, y los datos se muestran como se esperaba en la tabla de datos que tengo en mi página .xhtml. El problema es que el Javascript que llamo en el onevent parece que se llama antes de que se complete la renderización, y por lo tanto, el process de restablecer el foco a una columna en mi datatable no funciona, ya que la datatable se elimina y luego -agregó al DOM cuando el Ajax terminó de volver a renderizarse.

Estoy buscando en mi Javascript el estado de "éxito", con la esperanza de que en este punto, la prestación se haya completado. Por desgracia, este no es el caso, y mi getElementById (en realidad dojo.byId ) no está encontrando el elemento en la tabla de datos. Sé que mi function Javascript funciona en circunstancias normales, ya que estoy llamando a esta misma function en una situación en la que no hay una llamada Ajax, y todo funciona perfectamente allí.

Si pudiera evitar renderizar la celda de la tabla en la que estoy tratando de enfocar, sería genial, pero mi oyente está haciendo cambios en esta celda en la llamada ajax. Estoy en mi ingenio, así que cualquier idea sobre esto sería muy apreciada.

– en respuesta a Balusc (escuchado cosas buenas de ti, por cierto)

Hmm, en realidad estaba en el path correcto, pero todavía parece tener problemas. Estoy buscando el "éxito" y aún en el éxito, no puedo establecer el foco aquí. Aquí está mi function de Javascript que busca "éxito": esta function funciona en otra situación, donde no está asociada a un evento Ajax.

 function resetFocus(data) { var theRow = dojo.byId("resultsForm:selectedRow").value; if (data.status == "success") { dojo.query('[widgetId]',dojo.byId('theResultsDataTable')) .forEach(function(node) { var widget = dijit.byNode(node); var theId = widget.attr("id") if (theId.indexOf(':' + theRow + ':') != -1) { if (theId.indexOf('theOrppoNum') != -1) { widget.focus(); widget.attr("isFocused",true); } } }); } } 

One Solution collect form web for “llamada ajax en jsf 2.0 (myfaces), se llama a la function onevent Javascript en la label ajax antes de que se complete la renderización”

La function asociada al atributo onevent se invocará tres veces. Una vez antes de que se envíe la request de ajax, una vez que se haya recibido la respuesta de ajax y una vez que el DOM HTML se haya actualizado correctamente. Debería verificar la propiedad de status del argumento de datos dado para eso.

 function onEventFunction(data) { var status = data.status; // Can be "begin", "complete" or "success". switch (status) { case "begin": // Before the ajax request is sent. // ... break; case "complete": // After the ajax response is arrived. // ... break; case "success": // After update of HTML DOM based on ajax response.. // ... break; } } 

En su caso particular, solo necesita agregar un cheque si el estado es success .

 function resetFocus(data) { if (data.status == "success") { // Do your job here. } } 
  • Itere sobre una list del bean de respaldo en JavaScript
  • El enlace Primeface abre una window de networkingacción de correo electrónico
  • Incluya files JS en un file xhtml que se incluyó con ui: include
  • Cómo crear sombra en el campo de input JSF
  • Uso de <h: outputScript> para agregar código JavaScript en JSF
  • No se puede detener la encuesta de Primefaces
  • Qué puede causar el error "jsf no está definido" en la console del browser
  • el dialog no es un error de function
  • Vuelva a habilitar el button de command desactivado cuando se rellena un campo de input
  • Cómo actualizar la label de p: selectCheckboxMenu sin que el componente se cierre después de la llamada ajax en las primaras?
  • Mostrar / ocultar el formulario JSF2 usando selectBooleanCheckbox
  • Obtener el valor de bean de respaldo con Javascript
  • Ejecutar clic de fila usando oyente en tabla de datos de primas
  • Javascript tiene muchos buenos JS marco (como Node.js AngularJS Vue.js React.js) es el mejor lenguaje de script.