Pregunta

Mi problema es que RichFaces reRender no funciona 'en' el elemento actual en el árbol de elementos; únicos elementos superiores consiguen rerendered.

¿Hay alguna manera de acceder a los elementos inferiores con AJAX?

Cualquier ayuda sería muy apreciada! Daniel

Editar I editado esta pregunta a una más general. Ver las revisiones si está interesado en la pregunta original.

¿Fue útil?

Solución 2

Este es un ejemplo donde changePanel111() cambia el contenido de un elemento inferior:

<h:form id="form" prependId="true">
    <rich:panel id="PANEL1">
        <h:outputText id="PANEL1TEXT" value="#{ajaxTestBean.panel1}"/>
        <rich:panel id="PANEL11">
            <h:outputText id="PANEL11TEXT" value="#{ajaxTestBean.panel11}"/>
            <rich:panel id="PANEL111">
                <h:outputText id="PANEL111TEXT" value="#{ajaxTestBean.panel111}"/>
            </rich:panel>
        </rich:panel>
        <rich:panel id="PANEL12">
            <h:outputText id="PANEL12TEXT" value="#{ajaxTestBean.panel12}"/>
            <br/>
            <a4j:commandLink value="CHANGE PANEL12" action="#{ajaxTestBean.changePanel12}">
                <a4j:support reRender="PANEL12" event="onclick"/>
            </a4j:commandLink>
            <br/>
            <a4j:commandLink value="CHANGE PANEL111" action="#{ajaxTestBean.changePanel111}">
                <a4j:support reRender="form:PANEL111" event="onclick"/>
            </a4j:commandLink>
        </rich:panel>
    </rich:panel>
</h:form>

Aviso cómo las necesidades de elementos inferiores para ser identificados como form:PANEL111.

Espero que esto ayude!

Otros consejos

  • reRender trabaja con la proporcionando una id del objeto de destino que desea reRender (dentro del mismo contenedor de nombres - form más a menudo)
  • el id debe ser una cadena única, de acuerdo con la especificación de HTML
  • reRender permite valor dinámico - es decir reRender="#{myBean.currentItemsToRerender}

Sobre la base de que yo creo que debe ser capaz de lograr lo que quiere (aunque no está del todo claro)

Actualización:

UIComponent.findComponent(..) tiene un algoritmo bien definido para resolver los identificadores. Así, por absoluta incluir su ID reRendered debe comenzar con : y luego continuar a través de la jerarquía de los contenedores de nomenclatura.

reRender puede apuntar a cualquier componente fuera de la forma también. Por ejemplo, esta obra:

<h:form>
  <a4j:commandButton reRender="panel"/>
</h:form>

<h:panelGrid id="panel">
...
</h:panelGrid>

Para mis MyFaces + RichFaces aplicación, etiqueta <rich:panel> no estaba funcionando como se describe en la respuesta seleccionada. Cuando cambié a <a4j:outputPanel ajaxRendered="true" />, que comenzó a trabajar como se da aquí " No Rerendering "

Configuración: MyFaces 2.1.10 (Facelets utiliza para plantillas) y RichFaces 4.2.3.

Esperamos que esto ayude.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top