myfaces-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Leonardo Uribe (JIRA)" <>
Subject [jira] Created: (TOMAHAWK-1540) t:tree2 navigation, expand and collapse image component manipulation does not work well with PSS on JSF 2
Date Sat, 21 Aug 2010 18:08:16 GMT
t:tree2 navigation, expand and collapse image component manipulation does not work well with
PSS on JSF 2

                 Key: TOMAHAWK-1540
             Project: MyFaces Tomahawk
          Issue Type: Bug
          Components: JSF2, Tree2
    Affects Versions: 1.1.9
            Reporter: Leonardo Uribe
            Assignee: Leonardo Uribe

In JSF 1.2 and lower, HtmlTreeRenderer used a hack on expand, collapse and navigation images
to force render ids for graphic images, because on client side mode they are required by javascript
part. To do that, it was used a counter inside the renderer class. 

That previous hack worked well, because the ids are not required to save the component state.

In JSF 2.0, Partial State Saving was introduced, and to work correctly it requires some stability
on the ids generated. The problem is the ids for those components are changed on render response
time. When state saving occur, the state is saved using those ids, but on a postback the view
is built again, but since the ids are not changed on that time, it is not possible to restore
the state correctly. This effect does not break myfaces core PSS, bug it breaks mojarra, because
they use the ids even for save facets.

The solution is create a facelet tag handler that changes the ids on the right time and remove
the hack from the renderer.

Other problem present is how the navigation images are rendered. For render them, an image
component is created and then it is called setParent(), so when getClientId is called later
the id will contain the parent container client id too. This component is never saved on the
state, so it behaves like a transient one, but on PSS a listener is used to track tree changes,
and since it is not marked to be transient, it is added to the list for being restored.

The solution is mark this component as transient, calling setTransient(true).

This message is automatically generated by JIRA.
You can reply to this email to add a comment to the issue online.

View raw message