Un ID de cliente relativo (es decir, no se inicia con :
) es relativo al componente principal actual NamingContainer
. El <ui:repeat>
también es un NamingContainer
. Entonces, el render="panel1"
está buscando el componente en el contexto de <ui:repeat>
. Esto no va a funcionar. Una ID de cliente absoluta (es decir, comenzando con :
) está buscando el componente dentro del contexto de la vista raíz. Pero lo tiene dentro de un <h:form>
, que a su vez es otro componente NamingContainer
, por lo que el render=":panel"
tampoco funcionará.
lo siguiente debe funcionar, con prependId="false"
retirado para que pueda remitirla:
<h:form id="form1">
<h:panelGroup id="panel1">
<h:dataTable/>
<ui:repeat value="#{bean.page}" var="page">
<h:commandLink value="#{page}">
<f:ajax execute="@form" render=":form1:panel1" listener="#{bean.page}" />
</h:commandLink>
</ui:repeat>
</h:panelGroup>
</h:form>
Por cierto, si realidad desea representar única la mesa, entonces debería estar haciendo esto :
<h:form id="form1">
<h:panelGroup>
<h:dataTable id="table1" />
<ui:repeat value="#{bean.page}" var="page">
<h:commandLink value="#{page}">
<f:ajax execute="@form" render=":form1:table1" listener="#{bean.page}" />
</h:commandLink>
</ui:repeat>
</h:panelGroup>
</h:form>
actualización: según los comentarios, resulta que ha cambiado el carácter de separador NamingContainer
predeterminado de JSF de :
a _
por configuración. En ese caso, debe usar _
en lugar de :
en el selector de ID del cliente.
<f:ajax execute="@form" render="_form1_panel1" listener="#{bean.page}" />
¿Por qué se edita el código para mover el ' 'al otro lado? – BalusC
El ui: repeat está dentro del panelGroup. Entonces, tuve que moverme al otro lado. – user679526
Está bien, también editaré el fragmento de código en mi respuesta. Pero la respuesta técnica sigue siendo la misma. – BalusC