[ https://issues.apache.org/jira/browse/TOMAHAWK-1540?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Leonardo Uribe resolved TOMAHAWK-1540. -------------------------------------- Fix Version/s: 1.1.10-SNAPSHOT Resolution: Fixed > t:tree2 navigation, expand and collapse image component manipulation does not > work well with PSS on JSF 2 > --------------------------------------------------------------------------------------------------------- > > Key: TOMAHAWK-1540 > URL: https://issues.apache.org/jira/browse/TOMAHAWK-1540 > Project: MyFaces Tomahawk > Issue Type: Bug > Components: JSF2, Tree2 > Affects Versions: 1.1.9 > Reporter: Leonardo Uribe > Assignee: Leonardo Uribe > Fix For: 1.1.10-SNAPSHOT > > > 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.