Description
Issue was seen and fixed in Myfaces 1.1.6 already- but seems to still exist in 1.2.6
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
- relates to
-
MYFACES-1549 MyFaces-API issue: getValue of UIInput
- Closed
-
MYFACES-2497 INTERPRET_EMPTY_STRING_SUBMITTED_VALUES_AS_NULL on required fields
- Closed