interesting. Thanks Mike
On 7/10/06, Mike Kienenberger <[EMAIL PROTECTED]> wrote:
Apparently this is a year-old issue with JSF. We're hoping it's going to be addressed in the 1.2 MR release. https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=153 Sounds like the real fix is to rework how UIData behaves. I think the only JSF 1.1 solution is to add a forward-compability flag that handles it the same way as suggested by #153: "UIData state should be saved following the same rules as a normal component without all of the complicated rules" On 7/10/06, Andrew Robinson <[EMAIL PROTECTED]> wrote: > Good informtion. Thanks for tracking this down. The > updateActionListener would not have worked in my case as I have > multiple tables and they would each need to preserve the state if any > button in any list is clicked. But good to know. > > It would be great with h:dataTable or at least t:dataTable to do as > you say by default, if validation is skipped, keep the row state for > rendering. > > Thanks, > -Andrew > > On 7/10/06, Mike Kienenberger <[EMAIL PROTECTED]> wrote: > > Just as an FYI, using preserveRowStates appears to work, but I don't > > know what other problems it might cause. Here's what I'm considered > > -- using updateActionListener and a variable to only set it when I > > need it. > > > > <t:dataTable > > value="#{testcase.list}" > > var="item" > > preserveRowStates="#{testcase.preserveRowState}" > > > > > > > <h:column> > > > > <t:inputText > > id="projectName" > > value="#{testcase.value}"/> > > > > <h:commandButton > > immediate="true" > > value="Immediate Button - loses value"> > > <t:updateActionListener > > property="#{testcase.preserveRowState}" > > value="#{true}" /> > > </h:commandButton> > > <h:commandButton > > immediate="false" > > value="Non-Immediate Button - preserves value"> > > <t:updateActionListener > > property="#{testcase.preserveRowState}" > > value="#{false}" /> > > </h:commandButton> > > > > </h:column> > > > > </t:dataTable> > > > > > > > > > > On 7/8/06, Mike Kienenberger <[EMAIL PROTECTED]> wrote: > > > Andrew, > > > > > > I'm hitting the same problem. I spent half of Friday trying to track > > > it down, but I haven't solved it yet. > > > > > > So far, I've determined that it affects all UIData components > > > (h:dataTable, t:dataTable, and t:dataList). > > > > > > I've also figured out that it has something to do with incorrectly > > > restoring the row state for EditableValueHolders in the UIData during > > > renderResponse. The UIData should render the submitted values, but > > > those submitted values are wrong. > > > > > > During applyValues, the submitted values for the UIInputs are > > > correctly set and restored, but during renderResponse, the submitted > > > values for the UIInputs have mysteriously changed to null. I'm > > > still trying to figure out why the restored table state isn't the same > > > in all phases. > > > > > > > > > On 6/30/06, Andrew Robinson <[EMAIL PROTECTED]> wrote: > > > > I had thought I had my problem of phases with UIData figured out, but I am > > > > still having issues. > > > > I have a data table with input controls in it (inputText for example). > > > > Sometimes I lose data in these controls. Here are the use cases and the > > > > associated issue: > > > > > > > > If action immediate set to true, I lose all my data in the data tables > > > > If immediate is false my action never fires if a validation error occurs > > > > (this is not what I want in this use case, I want my action to ALWAYS fire) > > > > If I change the phase ID of the action to the validations phase, and there > > > > are validation errors, everything works > > > > If I chagne the phase ID of the action to the validations phase and there > > > > are no validation errors, I lose my data in the table What I am trying to > > > > figure out is the difference between #3 and #4. > > > > > > > > So, I have changed my action to execute during the processing of > > > > validations. This allows me to run my code regardless of validation errors. > > > > The side effect is if there are no validation errors, I still lose my data. > > > > > > > > Why would all my submitted values re-render in the data table when there are > > > > validation errors, but not when there are not (I am skipping update model, > > > > so in either case it never fires)? > > > > > > > > I can't see any difference in the code except that with validation errors > > > > there is at least one UI component marked as not being valid, but that > > > > doesn't seem like it should cause a behavior change with all components on > > > > the whole page. If it does how does that work (I couldn't see any such > > > > behavior in the code)? > > > > > > > > I really need to get this sorted out, so if someone could shed some light on > > > > how UIData manages to have its child components render submitted values or > > > > not I'd really appreciate it. > > > > > > > > Thanks, > > > > Andrew > > > > > > > > > > > > > >
-- Matthias Wessendorf futher stuff: blog: http://jroller.com/page/mwessendorf mail: mwessendorf-at-gmail-dot-com

