Hi Sean,

Have you tried my latest patch for htmldatatable? 
It should work with a sortheader and immediate="false"

Mathias

> -----Original Message-----
> From: sean schofield (JIRA) [mailto:[EMAIL PROTECTED] 
> Sent: Thursday, July 07, 2005 5:26 PM
> To: [email protected]
> Subject: [jira] Commented: (MYFACES-228) Sortheader 
> functionality does not work if datatable contains editable components
> 
> 
>     [ 
> http://issues.apache.org/jira/browse/MYFACES-228?page=comments
> #action_12315247 ] 
> 
> sean schofield commented on MYFACES-228:
> ----------------------------------------
> 
> Latest patch has not improved things much as far as this 
> specific problem goes.  If you use immediate="false" in the 
> sort header you still have a problem.
> 
> > Sortheader functionality does not work if datatable 
> contains editable components
> > 
> --------------------------------------------------------------
> ------------------
> >
> >          Key: MYFACES-228
> >          URL: http://issues.apache.org/jira/browse/MYFACES-228
> >      Project: MyFaces
> >         Type: Bug
> >     Versions: 1.0.9 beta
> >  Environment: WindowsXP, JDK 1.4.1_06, Tomcat 5.5
> >     Reporter: Rolf Kulemann
> >     Assignee: sean schofield
> >     Priority: Critical
> 
> >
> > I'm using a dataTable with sortheader. Everything is fine 
> as long as I
> > use outputText instead of a inputText. If I use inputText, the
> > List/array is sorted correct on the srever side when my 
> value binding is invkoked by the datatable, but the old model 
> (unsorted) is displayed.
> > I debuged that a bit and recognized, that as soon as I 
> click any command button, the sorted list gets displayed 
> correctly. This is because refresh() is called in the 
> datatable when clicking a commandButton. Refresh isn't called 
> when u click on the sort header command. On the other hand 
> using outputText works fine. While looking at the 
> HtmlDataTableHack class i found
> >  private static int 
> restoreDescendantComponentStates(UIComponent component,
> >                                                         
> EditableValueHolderState[] states,
> >                                                         
> EditableValueHolderState[] initialStates,
> >                                                         int 
> counter, int level)
> >     {
> >         for (Iterator 
> it=getChildrenAndOptionalFacetsIterator(level, component); 
> it.hasNext();)
> >         {
> >             UIComponent child = (UIComponent)it.next();
> >             //clear this descendant's clientId:
> >             child.setId(child.getId()); //HACK: This 
> assumes that setId always clears the cached clientId. Can we be sure?
> >             if (child instanceof EditableValueHolder)
> >             {
> >                 if (states != null)
> >                 {
> >                     
> states[counter].restore((EditableValueHolder)child);
> >                 }
> >                 else if (initialStates != null)
> >                 {
> >                     
> initialStates[counter].restore((EditableValueHolder)child);
> >                 }
> >                 else
> >                 {
> >                     // No state saved yet and no initial state !?
> >                     // Should never be possible, but let's 
> reset the component
> >                     // state to null values
> >                     ((EditableValueHolder)child).setValue(null);
> >                     
> ((EditableValueHolder)child).setLocalValueSet(false);
> >                     ((EditableValueHolder)child).setValid(true);
> >                     
> ((EditableValueHolder)child).setSubmittedValue(null);
> >                 }
> >                 counter++;
> >             }
> >             counter = 
> restoreDescendantComponentStates(child, states, 
> initialStates, counter,level+1);
> >         }
> >         return counter;
> >     }
> > Not sure, but it seems that this codes cuases the old model 
> state to be rendered and not the newly sorted one. If I have 
> time, I will track it down a bit more.
> > You can simply reproduce this by changing the sortTable example. You
> > only need to change outputText into inputText.
> 
> -- 
> This message is automatically generated by JIRA.
> -
> If you think it was sent incorrectly contact one of the 
> administrators:
>    http://issues.apache.org/jira/secure/Administrators.jspa
> -
> For more information on JIRA, see:
>    http://www.atlassian.com/software/jira
> 
> 

Attachment: fixed_uidata.diff
Description: fixed_uidata.diff

Reply via email to