While the change suggested by the venerable BalusC is alluringly simple,
it causes problems right away in our existing automated tests. As a
side note, my experience tells me that such a fundamental change is
impossible to introduce at this stage in the evolution of JSF.
Nonetheless, I'll continue to entertain it in an effort to demonstrate
the impossibility of doing what the reports suggest.
Consider this testcase:
In this code, "test" is an instance of UIInput. Because we have
manually called setValue(), the local value of the component has been
set. Therefore, the new code causes that value to be returned.
However, the spec for getValue() says that, in the absence of a local
value, the component's value expression must be consulted.
The root cause of all of the trouble here is that when we added
resetValue() to UIInput in JSF, way back in 2005, we should have pushed
it up to UIOutput as well. In the interest of minimizing the impact of
this change, we only put it on UIInput.
I've taken the hit now, and with that additional change, and changing
all occurrences of setValue(null) to be resetValue(), it seems the
BalusC code works.
I'm re-running the full test suite to make sure.