--- org/apache/el/parser/AstFunction.java (revision 607569) +++ org/apache/el/parser/AstFunction.java (working copy) @@ -97,10 +97,20 @@ if (numParams > 0) { params = new Object[numParams]; try { - for (int i = 0; i < numParams; i++) { + int lastParam = m.isVarArgs() ? paramTypes.length - 1 : numParams; + for (int i = 0; i < lastParam; i++) { params[i] = this.children[i].getValue(ctx); params[i] = coerceToType(params[i], paramTypes[i]); } + if (lastParam < numParams) { + Class componentType = paramTypes[lastParam].getComponentType(); + Object varArgs = java.lang.reflect.Array.newInstance(componentType, numParams - lastParam); + for (int i = lastParam; i < numParams; i++) { + Object param = this.children[i].getValue(ctx); + java.lang.reflect.Array.set(varArgs, i - lastParam, coerceToType(param, componentType)); + } + params[lastParam] = varArgs; + } } catch (ELException ele) { throw new ELException(MessageFactory.get("error.function", this .getOutputName()), ele);