a4j:poll - recargando el modelo de datos

Estoy tratando de usar a4j:poll componente para ajax que recarga una tabla de datos después de un intervalo de tiempo. Funciona bien, pero cuando la tabla se vuelve a cargar automáticamente y uso las herramientas (editar/eliminar fila) en la última columna, la tabla de datos (todas las filas) desaparece y tengo que cargarla manualmente (usando h:commandButton) ..

Aquí está parte de mi código:

<h:form>
  <a4j:poll id="poll" interval="30000" action="#{bean.load}" enabled="#{bean.pollEnabled}" render="list" />
</h:form>

<h:form id="list" ...>
 <rich:dataTable id="table" var="item" value="#{bean.model}">
 ...

Un botón que está llamando al mismo método de carga:

  <h:commandButton id="btn" action="#{bean.load}" ... /> 

Cuando lo recargo usando el botón, puedo usar las herramientas en la última columna. ¿No sabes por qué?

enter image description here

ACTUALIZACIÓN:

  • parece que en el primer caso (a4j:poll), cuando se usa editar/eliminar, se llama al constructor del bean........
  • frijol es @ViewScoped

preguntado el 24 de agosto de 12 a las 06:08

¿Qué pasa si los pones en la misma forma? -

¡Eres realmente el mejor! :-) Gracias, funciona. Por favor crea una respuesta para aceptarla -

De acuerdo, lo volví a publicar como respuesta :) -

1 Respuestas

parece que en el primer caso (a4j: encuesta), cuando se usa editar/eliminar, se llama al constructor del bean

No hago RichFaces, pero adivinar que este problema está de alguna manera relacionado con Edición JSF 790 lo que hace que el estado de vista de otros formularios se pierda durante las solicitudes ajax iniciadas por un formulario separado (y, de hecho, también provoca la reconstrucción de los beans de respaldo asociados con los otros formularios). Esto también se describe como el punto 7 de commandButton / commandLink / ajax action / listener método no invocado o valor de entrada no actualizado.

En su caso particular, colocando el <a4j:poll> en la misma forma que la tabla debe resolver el problema. No estoy seguro de por qué se colocó en un formulario separado en primer lugar, pero parece innecesario.

contestado el 23 de mayo de 17 a las 12:05

Se separó porque está recargando dos formularios separados (en una aplicación real). Así que pensé que sería mejor estar separados también :-) De todos modos, funciona mucho mejor dentro de un formulario, gracias de nuevo :-) - gaffcz

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.