Leonardo, Actually, the reason I saw the spec makes no sense is because CompositeComponentELResolver.CompositeComponentAttributesMapWrapper.put() _is_ working correctly. This is what the spec says about that method, section 5.6.2.3:
"put(): call get() on the attributes map, using the argument key to put() as the argument to get(). If the result is a ValueExpression, call setValue() on the ValueExpression, passing the value argument to put() as the second argument to setValue()." Notice that it says to call get on the "attributes map", i.e., the component's attributes map. This would be fine, but where it breaks down is in the definition of the component's attribute map's get() method, section 3.1.11: "If no entry exists in the internal data-structure, see if there is a ValueExpression for this attribute name by calling getValueExpression(), passing the attribute name as the key. If a ValueExpression exists, call getValue() on it, returning the result." The problem is that the component's attributes map will _always_ call getValue() on a ValueExpression if it's available, meaning the CC attributes map wrapper will never get a ValueExpression in the first place! Thanks, Curtiss Howard
