In Mojarra 1.2_15 com.sun.faces.el.ManagedBeanELResolver.setValue() has been
rewritten to rely on the resolveBean method (shared with getValue()).
resolveBean() sets context.setPropertyResolved(true) if the targeted bean is a
managed bean. setValue() however doesn't turn around and update the bean –
rather it still is relying on the ScopedAttributeELResolver to do this.
However, because it has now set the property as being resolved (in past versions
of Mojarra it didn't set the property as resolved), the
(Demux)CompositeELResolver skips further processing. I.e. the
ScopedAttributeELResolver is never called and hence the setValue() actually
never happens. Though my use case is from running the portlet bridge which in
turn is using setValue to update a managed bean on the request scope you should
be able to reproduce this merely by having a request scoped managed bean and
then calling trying to update it by executing an EL expression on it.
In case it makes a difference the code is doing:
// now evaluate the expression
ValueExpression valExpr =
expr, String.class); where expr is #
and modelPRP is a
requestscoped managed bean. This is followed by:
valExpr.setValue(context.getELContext(), newVals); where newVals is the
new string value being pushed/updated into the string valued bean.