ReRendering absoluta usando RichFaces
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.
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 unaid
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 decirreRender="#{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í "
Configuración: MyFaces 2.1.10 (Facelets utiliza para plantillas) y RichFaces 4.2.3.
Esperamos que esto ayude.