JSF2 f: ajax renderizado en un panel que contiene una ui: repetir datos dobles una vez

Tengo una ui:repeat dentro de ah:panelgroup y af:ajax fuera del panel. El evento de clic de f:ajax activa un procesamiento en h:panelgroup. Cuando cargo la página, el repetidor muestra mis 5 elementos en la lista. Cuando hago clic en el botón por primera vez, h:panelgroup se duplica a 10 elementos, cada clic subsiguiente solo actualiza los primeros 5 elementos en el panel (como debería). ¿Qué estoy haciendo mal? ¿No debería el evento de renderizar siempre actualizar el panel con el repetidor en él?

FRIJOL:

    @ManagedBean(name = "TestBean")
    @RequestScoped
    public class TestBean {
    private List testStrings;
    public TestBean() {
    Random rn = new Random(System.currentTimeMillis());
    testStrings = Arrays.asList(rn.nextInt(),rn.nextInt(),rn.nextInt(),rn.nextInt(),rn.nextInt());
        }
    }
    public List getTestStrings() {
        return testStrings;
    }

    public void setTestStrings(List testStrings) {
        this.testStrings = testStrings;
    }

JSF:

    <h:commandButton value="Refresh">
            <f:ajax event="click" render="testPanel"></f:ajax>
    </h:commandButton>
    <p>
    <h:panelGroup id="testPanel">
            <ui:repeat var="option" value="#{TestBean.testStrings}" varStatus="status">
                    <p>
                            <h:outputText value="#{option}"></h:outputText>
                    </p>
            </ui:repeat>
    </h:panelGroup>
    </p>

Estoy usando mojarra 2.1 creo.

Gracias.

RESPONDER

El problema no ocurre si elimino el <p>...</p> y reemplazarlo con <h:outputText value="#{option}"></h:outputText><br/>

preguntado el 31 de julio de 12 a las 15:07

Tu pregunta sería más clara si usaras el signo de interrogación. ? en algún lugar. ;) No pude reproducir el comportamiento que describiste (duplicando el contenido de panelGroup) usando mojarra 2.1.8. -

Lo siento, creo que no fui muy claro. Probaré una mojarra más nueva. -

Probé 2.1.11 y todavía tenía el mismo problema. -

Acabo de darme cuenta de por qué no podías reproducirlo. En el código de arriba que tenía <h:panelGroup><ui:repeat><p>.... pero en mi código tenía <p><h:panelGroup><ui:repeat><p>....., y si tomo alguno de esos dos <p>s fuera, entonces funciona bien. -

1 Respuestas

El problema no ocurre si elimino el <p>...</p> y reemplazarlo con <h:outputText value="#{option}"></h:outputText><br/>

Respondido 31 Jul 12, 16:07

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