[ 
http://issues.apache.org/jira/browse/MYFACES-228?page=comments#action_66123 ]
     
Oliver Rossmueller commented on MYFACES-228:
--------------------------------------------

I suppose the bug is in HtmlCommandSortHeaderTag where attribute 'immediate' is 
set to 'true' for the sort header command link. This way the corresponding 
action event is handled after ApplyRequestValues phase which is too early in 
case there are input components in the data table. The submitted form values 
will be submitted to the model in UpdateModelValues phase, so the fix might be 
to set 'immediate=false' for the sort header command links so the action event 
will be handled after the InvokeApplication phase when all the form values are 
in the model. 

> 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

Reply via email to