views:

465

answers:

1

I'm using RichFaces 3.3.1 with JSF RE 1.2 and facelets. I have a strange issue with the HTML generation of a rich:dataTable connected to a rich:datascroller.

<h:form id="br">
...
 <rich:datascroller id="scrt" page="#{searchBookings.page}" stepControls="hide" renderIfSinglePage="false" for="bt" align="left" reRender="ttips,bt"/>
 <rich:dataTable id="bt" rows="20" rendered="#{!empty searchBookings.bookings}" value="#{searchBookings.bookings}" var="row" binding="#{searchBookings.table}">
....

The first time the page loads, everything works nicely. If i visit the same page a second time, changing pages via the datascroller doesn't refresh the datatable any longer. Hitting the refresh button solves the problem.

Adding a4j:log revealed this warning:

 warn[14:50:07,259]: Node for replace by response with id br:bt not found in document

Indeed, when inspecting the HTML, the "correct" page looks like this:

  <table class="dr-table rich-table " id="br:bt" ....

Whereas the "bad" page looks like this:

  <table class="dr-table rich-table " id="br:bt:0" ....

Notice the ":0" at the end of the ID, it shouldn't be there. What could be causing this?

Thanks for any input. Geert

+1  A: 

ok found it. somewhere in the backing bean i did

table.setRowIndex(0);

what i meant to do was

table.setFirst(0);

The former apparently makes the generator assume he's generating rows, so he returns a row id, appending ":0". No idea how this only affects the second time the page is generated though. Hope this is useful to someone else once.

geert3