title: re-render single datatable row
body: <p>i have a dynamic form based on <code>dataTable</code>, nested inside another <code>dataTable</code>.</p>
  
  <p>on selecting a row from nested <code>dataTable</code> i'd like to update corresponding row from parent <code>dataTable</code> using <code>&lt;p:ajax&gt;</code></p>
  
  <pre><code>&lt;h:form id="form"&gt;
  
      &lt;h:dataTable var="field" value="#{testBean.propertyList}" varStatus="status"&gt;
  
          &lt;h:column&gt;
              &lt;h:outputLabel value="#{field.label}"/&gt;
          &lt;/h:column&gt;
  
          &lt;h:column&gt;
              &lt;h:panelGrid columns="2" styleClass="app-grid" rendered="#{field.toOne}"&gt;
                  &lt;h:panelGroup id="value"&gt;
                      &lt;h:outputText value="#{testBean.entity[field.name]}"/&gt;
                  &lt;/h:panelGroup&gt;
  
                  &lt;h:panelGroup&gt;
                      &lt;p:commandButton id="button" type="button" icon="ui-icon ui-icon-search"/&gt;
                      &lt;p:overlayPanel for="button" my="left bottom" at="left bottom" widgetVar="panel_#{field.name}"&gt;
                          &lt;p:dataTable
                              id="table" 
                              value="#{field.selectableModel}" 
                              selection="#{testBean.entity[field.name]}" 
                              selectionMode="single" 
                              var="item" 
                              rows="10"
                              paginator="true" 
                              paginatorAlwaysVisible="true"
                              paginatorPosition="bottom"
                              paginatorTemplate="{CurrentPageReport} {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"
                              currentPageReportTemplate="{totalRecords} records found"
                              rowsPerPageTemplate="5,10,15"&gt;
  
                              &lt;p:ajax event="rowSelect" update=":???:value" oncomplete="panel_#{field.name}.hide()"/&gt;
                              &lt;p:column headerText="entity"&gt;#{item}&lt;/p:column&gt;
                          &lt;/p:dataTable&gt;
                      &lt;/p:overlayPanel&gt;
                  &lt;/h:panelGroup&gt;
              &lt;/h:panelGrid&gt;
          &lt;/h:column&gt;
  
      &lt;/h:dataTable&gt;
  
  &lt;/h:form&gt;
  </code></pre>
  
  <p>the problem is that generated component tree does not have repeated explicit child components for <code>dataTable</code>:</p>
  
  <pre><code>&lt;HtmlForm enctype="application/x-www-form-urlencoded" id="form" inView="true" prependId="true" rendered="true" submitted="false" transient="false"&gt;
      &lt;HtmlDataTable border="-2147483648" first="0" id="j_idt101" inView="true" rendered="true" rowIndex="-1" rowStatePreserved="false" rows="0" transient="false" var="field"&gt;
          &lt;UIColumn id="j_idt103" inView="true" rendered="true" transient="false"&gt;
              &lt;HtmlOutputLabel escape="true" id="j_idt120" inView="true" rendered="true" style="" transient="false"/&gt;
          &lt;/UIColumn&gt;
          &lt;UIColumn id="j_idt121" inView="true" rendered="true" transient="false"&gt;
              &lt;HtmlPanelGrid border="-2147483648" columns="2" id="j_idt122" inView="true" rendered="false" styleClass="app-grid" transient="false"&gt;
                  &lt;HtmlPanelGroup id="value" inView="true" rendered="true" transient="false"&gt;
                      &lt;HtmlOutputText escape="true" id="j_idt227" inView="true" rendered="true" transient="false"/&gt;
                  &lt;/HtmlPanelGroup&gt;
                  &lt;HtmlPanelGroup id="j_idt117" inView="true" rendered="true" transient="false"&gt;
                      &lt;CommandButton ajax="true" async="false" disabled="false" escape="true" global="true" icon="ui-icon ui-icon-search" iconPos="left" id="button" immediate="false" inView="true" inline="false" partialSubmit="true" readonly="false" rendered="true" transient="false" type="button"/&gt;
                      &lt;OverlayPanel appendToBody="false" at="left bottom" dynamic="false" for="button" id="j_idt228" inView="true" my="left bottom" rendered="true" transient="false" widgetVar="panel_"&gt;
                          &lt;DataTable currentPageReportTemplate="{totalRecords} records found" draggableColumns="false" editable="false" emptyMessage="No records found." filterEvent="keyup" first="0" id="table" inView="true" lazy="false" liveScroll="false" pageLinks="10" paginator="true" paginatorAlwaysVisible="true" paginatorPosition="bottom" paginatorTemplate="{CurrentPageReport} {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}" rendered="true" resizableColumns="false" rowIndex="-1" rowStatePreserved="false" rows="10" rowsPerPageTemplate="5,10,15" scrollHeight="-2147483648" scrollRows="0" scrollWidth="-2147483648" scrollable="false" selectionMode="single" sortOrder="ascending" transient="false" var="item"&gt;
                              &lt;Column colspan="1" disabledSelection="false" filterBy="false" filterMatchMode="startsWith" filterMaxLength="2147483647" filterPosition="bottom" headerText="entity" id="j_idt229" inView="true" rendered="true" resizable="true" rowspan="1" transient="false" width="-1"&gt;
                                  #{item}
                              &lt;/Column&gt;
                          &lt;/DataTable&gt;
                      &lt;/OverlayPanel&gt;
                  &lt;/HtmlPanelGroup&gt;
              &lt;/HtmlPanelGrid&gt;
          &lt;/UIColumn&gt;
      &lt;/HtmlDataTable&gt;
  &lt;/HtmlForm&gt;
  </code></pre>
  
  <p>for this reason i'm thinking about using <code>&lt;c:forEach&gt;</code> instead of parent <code>dataTable</code> to make every row explicit in component tree.</p>
  
  <p>but the first problem is that <code>testBean</code> is <code>@ViewScoped</code>...</p>
  
  <p>and the second is that using <code>&lt;c:forEach&gt;</code> causes a <code>Java Heap Space</code> error...</p>
  
  <p>some hint?</p>