<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">Hi,<div><br></div><div>I've faced with an issue in our app I'd like to share when trying to update the datatable itself from a command element located inside a column.&nbsp;Case is to select a row, execute logic and update the datatable.&nbsp;Basic code:</div><div><br></div><div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; "><span style="color: #009494">&lt;</span><span style="color: #339393">h:dataTable</span> <span style="color: #a20092">id</span>=<span style="color: #5100ff">"cars"</span> <span style="color: #a20092">var</span>=<span style="color: #5100ff">"car"</span> <span style="color: #a20092">value</span>="#{tableBean.carsSmall}"<span style="color: #009494">&gt;</span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; color: rgb(51, 147, 147); "><span style="color: #009494"><span class="Apple-tab-span" style="white-space:pre"><font class="Apple-style-span" color="#000000">        </font></span>&lt;</span>h:column<span style="color: #009494">&gt;</span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; "><span class="Apple-tab-span" style="white-space:pre">                </span><span style="color: #009494">&lt;</span><span style="color: #339393">f:facet</span> <span style="color: #a20092">name</span>=<span style="color: #5100ff">"header"</span><span style="color: #009494">&gt;</span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; "><span class="Apple-tab-span" style="white-space:pre">                        </span>Model</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; "><span class="Apple-tab-span" style="white-space:pre">                </span><span style="color: #009494">&lt;/</span><span style="color: #339393">f:facet</span><span style="color: #009494">&gt;</span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; "><span class="Apple-tab-span" style="white-space:pre">                </span><span style="color: #009494">&lt;</span><span style="color: #339393">h:outputText</span> <span style="color: #a20092">value</span>="#{car.model}" <span style="color: #009494">/&gt;</span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; color: rgb(51, 147, 147); "><span style="color: #000000"><span class="Apple-tab-span" style="white-space:pre">        </span></span><span style="color: #009494">&lt;/</span>h:column<span style="color: #009494">&gt;</span></div><p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; min-height: 15.0px"><span class="Apple-tab-span" style="white-space:pre">                        </span></p><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; color: rgb(51, 147, 147); "><span style="color: #000000"><span class="Apple-tab-span" style="white-space:pre">        </span></span><span style="color: #009494">&lt;</span>h:column<span style="color: #009494">&gt;</span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; "><span class="Apple-tab-span" style="white-space:pre">                </span><span style="color: #009494">&lt;</span><span style="color: #339393">f:facet</span> <span style="color: #a20092">name</span>=<span style="color: #5100ff">"header"</span><span style="color: #009494">&gt;</span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; "><span class="Apple-tab-span" style="white-space:pre">                        </span>Action</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; "><span class="Apple-tab-span" style="white-space:pre">                </span><span style="color: #009494">&lt;/</span><span style="color: #339393">f:facet</span><span style="color: #009494">&gt;</span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; "><span class="Apple-tab-span" style="white-space:pre">                </span><span style="color: #009494">&lt;</span><span style="color: #339393">h:commandButton</span> <span style="color: #a20092">value</span>=<span style="color: #5100ff">"Some Action"</span> <span style="color: #a20092">actionListener</span>="#{tableBean.handleRowAction(car)}"<span style="color: #009494">&gt;</span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; "><span class="Apple-tab-span" style="white-space:pre">                        </span><span style="color: #009494">&lt;</span><span style="color: #339393">f:ajax</span> <span style="color: #a20092">render</span>=<span style="color: #5100ff">"cars"</span> <span style="color: #009494">/&gt;</span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; color: rgb(51, 147, 147); "><span style="color: #000000"><span class="Apple-tab-span" style="white-space:pre">                </span></span><span style="color: #009494">&lt;/</span>h:commandButton<span style="color: #009494">&gt;</span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; color: rgb(51, 147, 147); "><span style="color: #000000"><span class="Apple-tab-span" style="white-space:pre">        </span></span><span style="color: #009494">&lt;/</span>h:column<span style="color: #009494">&gt;</span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; color: rgb(51, 147, 147); "><span style="color: #009494">&lt;/</span>h:dataTable<span style="color: #009494">&gt;</span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; color: rgb(51, 147, 147); "><font class="Apple-style-span" color="#009494"><br></font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; color: rgb(51, 147, 147); "><span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: Helvetica; font-size: medium; ">As datatable has a rowIndex &gt;= 0 during rendering of commandButton f:ajax defines the component id to render as cars:{rowIndex} where I should expect "cars" only. This is due to UIData.getClientId implementation as UIData</span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; color: rgb(51, 147, 147); "><font class="Apple-style-span" color="#009494"><span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: Helvetica; font-size: medium; "><div>adds rowIndex for unique row ids. This causes an issue with a nested f:ajax case.</div><div><br></div><div>Regards,</div><div><br></div><div>Cagatay Civici</div></span></font></div></div></body></html>