SWF-1114 - Consider making ViewActionStateHolder and ViewRootHolder put in flash scope Serializable

This commit is contained in:
Jeremy Grelle
2009-06-24 22:12:43 +00:00
parent ad6037206b
commit 534c0c06da
3 changed files with 7 additions and 4 deletions

View File

@@ -122,7 +122,7 @@ public class FlowViewHandler extends ViewHandler {
private UIViewRoot restoreFlowView(FacesContext facesContext, String resourcePath) {
RequestContext context = RequestContextHolder.getRequestContext();
ViewRootHolder holder = (ViewRootHolder) context.getFlashScope().get(View.USER_EVENT_STATE_ATTRIBUTE);
if (holder != null && holder.getViewRoot().getViewId().equals(resourcePath)) {
if (holder != null && holder.getViewRoot() != null && holder.getViewRoot().getViewId().equals(resourcePath)) {
return holder.getViewRoot();
} else {
return delegate.restoreView(facesContext, resourcePath);

View File

@@ -16,6 +16,7 @@
package org.springframework.faces.webflow;
import java.io.IOException;
import java.io.Serializable;
import javax.faces.component.UIViewRoot;
import javax.faces.context.FacesContext;
@@ -133,7 +134,7 @@ public class JsfView implements View {
}
}
public Object getUserEventState() {
public Serializable getUserEventState() {
// Set the temporary UIViewRoot state so that it will be available across the redirect
return new ViewRootHolder(getViewRoot());
}

View File

@@ -15,6 +15,8 @@
*/
package org.springframework.faces.webflow;
import java.io.Serializable;
import javax.faces.component.UIViewRoot;
/**
@@ -22,9 +24,9 @@ import javax.faces.component.UIViewRoot;
*
* @author Scott Andrews
*/
class ViewRootHolder {
class ViewRootHolder implements Serializable {
private UIViewRoot viewRoot;
private transient UIViewRoot viewRoot;
public ViewRootHolder(UIViewRoot viewRoot) {
this.viewRoot = viewRoot;