java - How to refer to dataTable parent within the dataTable? -
consider dummy case:
<h:form id="wrapperform"> <h:panelgroup id="rowscontainer"> <h:datatable id="rowstable" value="#{bean.rows}" var="row" > <h:column> <h:commandbutton value="click me update (#{component.parent.parent.parent.clientid})"> <f:ajax render=":#{component.parent.parent.parent.clientid}" /> </h:commandbutton> </h:column> </h:datatable> </h:panelgroup> </h:form>
on button click, id=rowscontainer
gets updated should.
however, if add ui:repeat
there, not work anymore:
<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>
instead, gets:
<f:ajax> contains unknown id ':wrapperform:blocksrepeat:0:rowswrapper' - cannot locate in context of component j_idt363
however, component there id, el should ok. somehow ui:repeat
breaks case. possibly trying evaluate el before actual loop?
how refer rowswrapper
element within datatable?
note: asked odd datatable naming within ui:repeat, turned out bug. issue should not related that, however, wrapping datatable within panelgroup suggested here.
there 2 things going wrong:
1) ui:repeat broken
as answered balusc in comments of question, first issue occurs (once again) due a bug in mojarra. seems ui:repeat
broken wrapper container holding h:datatable
not help. more details, see question "why doesn't h:datatable inside ui:repeat correct id?" , comments of question.
as balusc suggests, workaround use h:datatable instead of ui:repeat
. provide unconvenient (<table>
) html works. removes odd issues when adding , removing rows to/from inner iteration.
note: issues regarding ui:repeat
seem fixed in mojarra 2.0.3 not all.
2) references fail
even h:datatable
workaround, reference inner h:datatable
button inside fails. there no ui:repeat
in use, must datatable's internal issue. don't see solution @ moment, filed ticket behavior well.
Comments
Post a Comment