Details
-
Bug
-
Status: Open
-
Major
-
Resolution: Unresolved
-
2.1.3
-
None
-
None
Description
I have a h:dataTable component with an h:inputText component per row bound to a list. Now I want to add a new row with a h:commandLink outside the table via ajax. This link is immediate to avoid validation on the input components.
The problem is, that when I set the command link immediate, data the user entered into the input components vanishes (render and execute in f:ajax are set to the table). I did some investigations and saw that UIData.encodeBegin() resets the state (and submitted values!) before rendering. IMO, the submitted values must be preserved if phases 3 to 5 are skipped.
I first thought that setting _isValidChilds to false in processDecodes if renderResponse() is called might work. But as the link is outside and after the table renderResponse() is not called yet at that point. I wonder what the correct way to handle this could be? Maybe remember if processValidators() was called on the table. If not, don't kill the state.
Btw. the same applies for ui:repeat.