Hi Michael, You will get more visibility with more people (thus, more discussion) if you talk about issues on the dev mailing list rather than in the JIRA issue comments.
I think this issue is likely related to why tomahawk's dataTable has preserveRowStates and preserveDataModel attributes, but I don't feel knowledgeable enough to comment much beyond that. On Tue, Sep 27, 2011 at 2:59 AM, Michael Kurz (Commented) (JIRA) <dev@myfaces.apache.org> wrote: > > [ > https://issues.apache.org/jira/browse/MYFACES-3326?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13115270#comment-13115270 > ] > > Michael Kurz commented on MYFACES-3326: > --------------------------------------- > > I did some further investigations and the problem is the same in Mojarra. The > spec doc for UIData.encodeBegin() says the following: > > "In addition to the default behavior, ensure that any saved per-row state for > our child input components is discarded unless it is needed to rerender the > current page with errors." > > I additionaly scanned the spec and found no mention of displaying the > submitted value if it is still set in render response (which apparently is > done). > > So what do you think: Is this a valid issue? > >> UIData does not preserve submitted values on immediate requests >> --------------------------------------------------------------- >> >> Key: MYFACES-3326 >> URL: https://issues.apache.org/jira/browse/MYFACES-3326 >> Project: MyFaces Core >> Issue Type: Bug >> Components: JSR-314 >> Affects Versions: 2.1.3 >> Reporter: Michael Kurz >> Attachments: MYFACES-3326-testapp.zip >> >> >> 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. > > -- > This message is automatically generated by JIRA. > If you think it was sent incorrectly, please contact your JIRA > administrators: > https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa > For more information on JIRA, see: http://www.atlassian.com/software/jira > > >