Enrique Medina wrote:
Fantastic. NULL tells JSF just to stay in the same page, so it should
work as you have tested. But the problem still remains when navigating
to another page, doesn't it?

Yes that is a huge problem, but the problem is bigger than it seems, it is basically the old scope problem, which means that you basically loose all the values unless you traverse it, because we do not have a scope system between request and session, and add to that some weirdness in the behavior between the datatable and the scroller and you run into this mess.

Shale can solve that to some degree, but I rather doubt it will solve it for the datatable, the problem is sort of much more fundamental.

I will try to explain what happens and why the values are lost between faces-config navigations:

What happens in a null:

The values are cleard the form values are refilled, the parameters are passed via a submit...
The datatable is generated
the scroller is generated does an encodebegin with all the needed calculations passes it to the datatable for further reference,
the datatable is rendered
and then the scroller does its rendering.


What happens if you dont do the refresh but a faces-config based traversal:

The steps until the encodebegin are identical, but then the problem arises in between encodebegin and renderchildren, the datamodel is lost along the way and a new one is generated, which is not the same as the rendered one, thus passing the values, altering the states, etc... does not have any effect on the rendering and the table->scroller subsystem
resets to the first page.

I tried to fix that, but I ran against my limited knowledge of JSF.
Probably to fix that a new datatable and scroller maybe a combined component has to be implemented. Trying to fix it from outside with a bunch of listeners which hook into the component definitely wont help neither does altering the scroller rendering code, because the problem is nested much much deeper.

Reply via email to