diff --git a/spring-webflow/src/main/java/org/springframework/webflow/action/ResultObjectBasedEventFactory.java b/spring-webflow/src/main/java/org/springframework/webflow/action/ResultObjectBasedEventFactory.java index f41b4ded..a4df2342 100644 --- a/spring-webflow/src/main/java/org/springframework/webflow/action/ResultObjectBasedEventFactory.java +++ b/spring-webflow/src/main/java/org/springframework/webflow/action/ResultObjectBasedEventFactory.java @@ -17,6 +17,7 @@ package org.springframework.webflow.action; import org.springframework.core.JdkVersion; import org.springframework.core.enums.LabeledEnum; +import org.springframework.util.StringUtils; import org.springframework.webflow.execution.Event; import org.springframework.webflow.execution.RequestContext; @@ -81,7 +82,13 @@ public class ResultObjectBasedEventFactory extends EventFactorySupport implement String eventId = EnumUtils.getEnumName(resultObject); return event(source, eventId, getResultAttributeName(), resultObject); } else if (isString(resultObject.getClass())) { - return event(source, (String) resultObject); + String resultString = (String) resultObject; + if (StringUtils.hasText(resultString)) { + return event(source, resultString); + } else { + // treat an empty string as the null event + return event(source, getNullEventId()); + } } else if (isEvent(resultObject.getClass())) { return (Event) resultObject; } else { diff --git a/spring-webflow/src/test/java/org/springframework/webflow/action/EvaluateActionTests.java b/spring-webflow/src/test/java/org/springframework/webflow/action/EvaluateActionTests.java index 8f18fa2d..52daea80 100644 --- a/spring-webflow/src/test/java/org/springframework/webflow/action/EvaluateActionTests.java +++ b/spring-webflow/src/test/java/org/springframework/webflow/action/EvaluateActionTests.java @@ -34,6 +34,20 @@ public class EvaluateActionTests extends TestCase { assertEquals("bar", result.getId()); } + public void testEvaluateExpressionEmptyStringResult() throws Exception { + EvaluateAction action = new EvaluateAction(new StaticExpression(""), null); + MockRequestContext context = new MockRequestContext(); + Event result = action.execute(context); + assertEquals("null", result.getId()); + } + + public void testEvaluateExpressionNullResult() throws Exception { + EvaluateAction action = new EvaluateAction(new StaticExpression(null), null); + MockRequestContext context = new MockRequestContext(); + Event result = action.execute(context); + assertEquals("success", result.getId()); + } + public void testEvaluateExpressionResultExposer() throws Exception { StaticExpression resultExpression = new StaticExpression(""); EvaluateAction action = new EvaluateAction(new StaticExpression("bar"), new ActionResultExposer(