Betrachten Sie einen Dummy-Fall:
<h:form id="wrapperForm">
<h:panelGroup id="rowsContainer">
<h:dataTable id="rowsTable" value="#{bean.rows}" var="row" >
<h:column>
<h:commandButton value="Click me to update (#{component.parent.parent.parent.clientId})">
<f:ajax render=":#{component.parent.parent.parent.clientId}" />
</h:commandButton>
</h:column>
</h:dataTable>
</h:panelGroup>
</h:form>
Beim Klicken auf die Schaltfläche wird die id=rowsContainer
erfolgreich aktualisiert wird, wie es sein sollte.
Wenn ich jedoch Folgendes hinzufüge ui:repeat
Dort funktioniert es nicht mehr:
<h:form id="wrapperForm">
<ui:repeat id="blocksRepeat" var="block" value="#{bean.blocks}">
<h:panelGroup id="rowsWrapper">
<h:dataTable id="rowsTable" value="#{block.rows}" var="row" >
<h:column>
<h:commandButton value="Click me 2 update (#{component.parent.parent.parent.clientId})">
<f:ajax render=":#{component.parent.parent.parent.clientId}" />
</h:commandButton>
</h:column>
</h:dataTable>
</h:panelGroup>
</ui:repeat>
</h:form>
Stattdessen wird dies:
<f:ajax> contains an unknown id ':wrapperForm:blocksRepeat:0:rowsWrapper' - cannot locate it in the context of the component j_idt363
Die Komponente ist jedoch wirklich mit dieser ID vorhanden, so dass die EL in Ordnung sein sollte. Irgendwie ist die ui:repeat
bricht den Fall. Wird möglicherweise versucht, die EL vor der eigentlichen Schleife auszuwerten?
Wie beziehen Sie sich auf die rowsWrapper
Element innerhalb der dataTable?
Anmerkung: Kürzlich fragte ich nach ungerade dataTable-Benennung innerhalb von ui:repeat die stellte sich als Fehler heraus . Dieses Problem sollte jedoch nicht damit zusammenhängen, da ich die dataTable wie vorgeschlagen in eine panelGroup einfüge aquí .