Description
UIOutput currently has the following code:
public Object getValue()
{ if (_value != null) return _value; ValueBinding vb = getValueBinding("value"); return vb != null ? (Object)vb.getValue(getFacesContext()) : null; }UIInput has the following code:
public void setValue(Object value)
{ setLocalValueSet(true); super.setValue(value); }My problem (pseudo code):
1) user enters an empty string in an input-component: ""
2) conversion and validation phase: "" --> setValue(null);
isLocalValueSet = true; setSubmittedValue(null);
3) validation fails in some component on the page --> update model
phase is skipped
4) renderer calls getValue(); --> getValue() evaluates the
value-binding, as the local-value is 'null', and I get the
default-value of the bean shown again
proposed solution:
UIInput overwrites getValue of UIOutput:
public Object getValue()
{ if (isLocalValueSet()) return _value; ValueBinding vb = getValueBinding("value"); return vb != null ? (Object)vb.getValue(getFacesContext()) : null; }Attachments
Issue Links
- is related to
-
MYFACES-2161 MyFaces-API issue: getValue of UIInput
- Closed