Details
-
Type: Bug
-
Status: Closed
-
Priority: Major
-
Resolution: Fixed
-
Affects Version/s: 1.8RC2
-
Fix Version/s: 1.8
-
Component/s: Framework
-
Labels:None
-
Environment:ICEFaces + any external code trying to do navigation using API exposed by PersistentFacesState for navigation/redirection
-
ICEsoft Forum Reference:
-
Workaround Exists:Yes
-
Workaround Description:
Description
Client has a long running process trying to do navigation. With the introduction of StateSaving, the ViewRoot is no longer maintained between user requests.
The PersistentFacesState class has been modified to keep a reference to the information required to start a JSF lifecycle. This is necessary for all server push operations but in this case, the navigateTo and redirectTo methods don't start a JSF lifecycle and the client hasn't the means to start one in the long running thread hence the ViewRoot reference will be null.
The PersistentFacesState class has been modified to keep a reference to the information required to start a JSF lifecycle. This is necessary for all server push operations but in this case, the navigateTo and redirectTo methods don't start a JSF lifecycle and the client hasn't the means to start one in the long running thread hence the ViewRoot reference will be null.
I've found a way to check if a lifecycle is currently in process and to start a lifecycle if not. This seems to work well.
/**
*
*
*/
public void navigateTo(String outcome) {
warnIfSynchronous();
try
catch (Exception e)
{ throw new RuntimeException(e); }}
I've removed the threadLocal management code in this method since it already is in place in the execute and render
methods.