myfaces-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Rolf Kulemann (JIRA)" <myfaces-...@incubator.apache.org>
Subject [jira] Commented: (MYFACES-228) Sortheader functionality does not work if datatable contains editable components
Date Wed, 13 Jul 2005 14:27:13 GMT
    [ http://issues.apache.org/jira/browse/MYFACES-228?page=comments#action_12315721 ] 

Rolf Kulemann commented on MYFACES-228:
---------------------------------------

I have tested a nightly JSF build (20051207 dowloaded from http://svn.apache.org/builds/myfaces/nightly/).
The problem is the same with the sortHeader example as soon as you surround the dataTable
with a h:form tag,
Any ideas?

BTW: I have problems to check out jsf from svn. I followed the instructions on http://myfaces.apache.org/community/versioning.html.
That is why I tried the nightly.

> 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
>  Attachments: datascroller.diff, fixed_sortheader.diff
>
> 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


Mime
View raw message