diff --git a/spring-webflow/src/main/java/org/springframework/webflow/context/portlet/PortletExternalContext.java b/spring-webflow/src/main/java/org/springframework/webflow/context/portlet/PortletExternalContext.java index 96b0299c..6f7e7dd5 100644 --- a/spring-webflow/src/main/java/org/springframework/webflow/context/portlet/PortletExternalContext.java +++ b/spring-webflow/src/main/java/org/springframework/webflow/context/portlet/PortletExternalContext.java @@ -245,7 +245,7 @@ public class PortletExternalContext implements ExternalContext { public void requestFlowDefinitionRedirect(String flowId, MutableAttributeMap input) throws IllegalStateException { assertRedirectResponseAllowed(); flowDefinitionRedirectFlowId = flowId; - flowDefinitionRedirectFlowInput = input; + flowDefinitionRedirectFlowInput = input != null ? input : new LocalAttributeMap(); recordResponseComplete(); } diff --git a/spring-webflow/src/main/java/org/springframework/webflow/context/servlet/ServletExternalContext.java b/spring-webflow/src/main/java/org/springframework/webflow/context/servlet/ServletExternalContext.java index 34db2a4d..5a2f5e66 100644 --- a/spring-webflow/src/main/java/org/springframework/webflow/context/servlet/ServletExternalContext.java +++ b/spring-webflow/src/main/java/org/springframework/webflow/context/servlet/ServletExternalContext.java @@ -241,7 +241,7 @@ public class ServletExternalContext implements ExternalContext { public void requestFlowDefinitionRedirect(String flowId, MutableAttributeMap input) throws IllegalStateException { assertResponseAllowed(); flowDefinitionRedirectFlowId = flowId; - flowDefinitionRedirectFlowInput = input; + flowDefinitionRedirectFlowInput = input != null ? input : new LocalAttributeMap(); recordResponseComplete(); } diff --git a/spring-webflow/src/test/java/org/springframework/webflow/context/portlet/PortletExternalContextTests.java b/spring-webflow/src/test/java/org/springframework/webflow/context/portlet/PortletExternalContextTests.java index 5957eb3d..a6f47b14 100644 --- a/spring-webflow/src/test/java/org/springframework/webflow/context/portlet/PortletExternalContextTests.java +++ b/spring-webflow/src/test/java/org/springframework/webflow/context/portlet/PortletExternalContextTests.java @@ -26,6 +26,7 @@ import org.springframework.mock.web.portlet.MockPortletContext; import org.springframework.mock.web.portlet.MockRenderRequest; import org.springframework.mock.web.portlet.MockRenderResponse; import org.springframework.webflow.context.servlet.ServletExternalContext; +import org.springframework.webflow.core.collection.LocalAttributeMap; /** * Unit tests for {@link ServletExternalContext}. @@ -109,6 +110,19 @@ public class PortletExternalContextTests extends TestCase { assertTrue(context.isResponseComplete()); assertFalse(context.isResponseCompleteFlowExecutionRedirect()); assertFalse(context.isResponseAllowed()); + assertNotNull(context.getFlowRedirectFlowInput()); + } + + public void testCommitFlowRedirectWithInput() { + assertFalse(context.isResponseAllowed()); + LocalAttributeMap input = new LocalAttributeMap(); + context.requestFlowDefinitionRedirect("foo", input); + assertTrue(context.getFlowDefinitionRedirectRequested()); + assertEquals("foo", context.getFlowRedirectFlowId()); + assertTrue(context.isResponseComplete()); + assertFalse(context.isResponseCompleteFlowExecutionRedirect()); + assertFalse(context.isResponseAllowed()); + assertSame(input, context.getFlowRedirectFlowInput()); } public void testCommitFlowRedirectRenderRequest() { diff --git a/spring-webflow/src/test/java/org/springframework/webflow/context/servlet/ServletExternalContextTests.java b/spring-webflow/src/test/java/org/springframework/webflow/context/servlet/ServletExternalContextTests.java index 9a920df8..27814b96 100644 --- a/spring-webflow/src/test/java/org/springframework/webflow/context/servlet/ServletExternalContextTests.java +++ b/spring-webflow/src/test/java/org/springframework/webflow/context/servlet/ServletExternalContextTests.java @@ -23,6 +23,7 @@ import junit.framework.TestCase; import org.springframework.mock.web.MockHttpServletRequest; import org.springframework.mock.web.MockHttpServletResponse; import org.springframework.mock.web.MockServletContext; +import org.springframework.webflow.core.collection.LocalAttributeMap; /** * Unit tests for {@link ServletExternalContext}. @@ -106,6 +107,17 @@ public class ServletExternalContextTests extends TestCase { assertEquals("foo", context.getFlowRedirectFlowId()); assertTrue(context.isResponseComplete()); assertFalse(context.isResponseCompleteFlowExecutionRedirect()); + assertNotNull(context.getFlowRedirectFlowInput()); + } + + public void testCommitFlowRedirectWithInput() { + LocalAttributeMap input = new LocalAttributeMap(); + context.requestFlowDefinitionRedirect("foo", input); + assertTrue(context.getFlowDefinitionRedirectRequested()); + assertEquals("foo", context.getFlowRedirectFlowId()); + assertTrue(context.isResponseComplete()); + assertFalse(context.isResponseCompleteFlowExecutionRedirect()); + assertSame(input, context.getFlowRedirectFlowInput()); } public void testCommitExternalRedirect() {