diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/util/TextParseUtil.java b/xwork-core/src/main/java/com/opensymphony/xwork2/util/TextParseUtil.java index a3938ef33..211d08c6c 100644 --- a/xwork-core/src/main/java/com/opensymphony/xwork2/util/TextParseUtil.java +++ b/xwork-core/src/main/java/com/opensymphony/xwork2/util/TextParseUtil.java @@ -212,13 +212,14 @@ public class TextParseUtil { Object result = parser.evaluate(openChars, expression, ognlEval, maxLoopCount); - XWorkConverter conv = ((Container)context.get(ActionContext.CONTAINER)).getInstance(XWorkConverter.class); - Collection resultCol; if (result instanceof Collection) { @SuppressWarnings("unchecked") Collection casted = (Collection)result; - resultCol = new ArrayList(casted.size()); + resultCol = new ArrayList(); + + XWorkConverter conv = ((Container)context.get(ActionContext.CONTAINER)).getInstance(XWorkConverter.class); + for (Object element : casted) { String stringElement = (String)conv.convertValue(context, element, String.class); if (shallBeIncluded(stringElement, excludeEmptyElements)) { @@ -229,13 +230,10 @@ public class TextParseUtil { } } } else { - resultCol = new ArrayList(1); - String stringResult = (String)conv.convertValue(context, result, String.class); - if (shallBeIncluded(stringResult, excludeEmptyElements)) { - if (evaluator != null) { - stringResult = evaluator.evaluate(stringResult).toString(); - } - resultCol.add(stringResult); + resultCol = new ArrayList(); + String resultStr = translateVariables(expression, stack, evaluator); + if (shallBeIncluded(resultStr, excludeEmptyElements)) { + resultCol.add(resultStr); } }