I displaying multiple p:datatable \'s through ui:repeat, the following code snippet illustrates what I am doing:
This is likely related to JSF issue 1830.
Your best bet is to replace ui:repeat by another repeater which does its UINamingContainer job better, for example a <p:dataList> or even another <p:dataTable>. The list bullets of <p:dataList> can be removed by CSS list-style-type: none.
If that also doesn't work, then it's maybe a bug in PrimeFaces <p:dataTable> itself.
The only way I found was to use two p:datatable tags, the parent one with only one column. I couldn't make it work with p:dataList. I guess p:dataList is extending the same bogus class.
Should work with this:
<p:datatable id="searchTables"
value="#{searchBean.mapKeys}"
var="mapKeys">
<p:column>
<p:dataTable id="recordTable"
value="#{searchBean.resultMap[mapKeys].resultList}"
var="recordTable"
paginator="true"
rows="10">
<f:facet name="header">
<h:outputText value="#{searchBean.resultMap[mapKeys].name}"/>
</f:facet>
<p:columns value="#{searchBean.resultMap[mapKeys].resultColumns}"
var="column"
columnIndexVar="colIndex">
<f:facet name="header">
<p:outputPanel>
#{column.header}
</p:outputPanel>
</f:facet>
<h:outputText value="#{recordTable[column.property]}"/><br/>
</p:columns>
</p:dataTable>
</p:column>
</p:dataTable>