2011-01-11 10 views
5

Mi página consta de varias áreas que se crean al iterar sobre una lista de elementos utilizando <ui:repeat>. Imagínese este ejemplo simplificado:JSF 2.0: Reproducción/actualización de un solo elemento en la interfaz de usuario: repetir utilizando AJAX

<h:form id="form">  
    <ui:repeat id="repeatContainer" var="item" value="#{testBean.items}" varStatus="status"> 
     <h:outputText value="#{item.title}: "/> 

     <!-- I want to re-render only a single one of these fields --> 
     <h:outputText id="valueContainer" value="#{item.value}"/><br/>   
    </ui:repeat> 
</h:form> 

Ahora, quiero volver a hacer (sólo) la valueContainer de un elemento específicodentro de esta lista usando AJAX (por ejemplo, el elemento con índice 1). Ya he probado todas estas combinaciones sin ninguna suerte:

<!-- Works, but renders all items: --> 
<f:ajax render=":form"/> 

<!-- This is what I actually want to achieve (does not work, comp. not found): --> 
<f:ajax render=":form:repeatContainer:1:valueContainer"/> 

<!-- Does not work (component not found): --> 
<f:ajax render=":form:repeatContainer"/> 

<!-- Does not work (component not found): --> 
<f:ajax render=":form:repeatContainer:1"/> 

<!-- Does not work (component not found): --> 
<f:ajax render=":form:1"/> 

<!-- Does not work (component not found): --> 
<f:ajax render=":form:1:valueContainer"/> 

<!-- Does not work (no error message, but does nothing): --> 
<f:ajax render=":form:repeatContainer:valueContainer"/> 

Mis requisitos son:

  • necesito para identificar el componente de volver a hacer con un identificador absoluto ruta, porque el botón que activa la actualización está en algún lugar completamente diferente en el componente árbol.
  • re-representación de toda la página o forma (usando @all/@form) se inútil para mí, porque ese tipo de pone en tela de juicio por qué estoy usando JSF/AJAX en absoluto ...
  • Necesito para lograr lo mismo con las celdas PrimeFaces <p:dataGrid> (es decir, actualizar solo un subcomponente específico de una celda específica), pero supongo que esto reduce el mismo problema.

Supongo que debe haber una solución fácil a esto que actualmente estoy pasando por alto ?!

Respuesta

0

Parece que esto es causado por dos errores diferentes en Mojarra 2.0.2. El siguiente hilo discute un tema relacionado: How to refer to dataTable parent within the dataTable?

En mi caso, estoy usando el PrimeFaces <p:dataGrid> en lugar de <h:dataTable>, pero parece sufrir los mismos síntomas. Las referencias simplemente fallan. Supongo que esto está relacionado con un error en UIComponent#findComponent() o los métodos subyacentes de la implementación de JSF.

Parece que no hay solución para este problema en este momento ... salvo esperar a que se solucionen las implementaciones de JSF ... si alguien más tiene más sugerencias, siéntase libre de agregarlas.

0

El problema puede ser resuelto mediante la colocación de la forma en un primer caras t: outputPanel y establezca la actualización automática a la verdadera

+0

Lo sentimos, pero no veo la forma en que responde a la pregunta. Colocar el formulario en un p: outputPanel no ayudará a actualizar filas individuales. – sleske

Cuestiones relacionadas