Description
lookupSet is filled using either getSubmittedValuesAsSet or getSelectedValuesAsSet. Both of these routines use RenderUtils.internalSubmittedOrSelectedValuesAsSet(), which uses RenderUtils.getConvertedStringValue().
getConvertedStringValue() always returns strings. Hence, lookupSet.contains() should always compare against itemStrValue (rather than itemValue.)
This impacts 2 files:
HtmlCheckboxRendererBase.java:
168,170c168,173
< boolean checked = (useSubmittedValues && lookupSet^M
< .contains(itemStrValue))^M
< || (!useSubmittedValues && lookupSet.contains(itemValue));^M
—
> // boolean checked = (useSubmittedValues && lookupSet^M
> // .contains(itemStrValue))^M
> // || (!useSubmittedValues && lookupSet.contains(itemValue));^M
> // HAN - the myfaces code does not work with a converter. The lookupSet=getS*ValuesAsSet() ultimately calls RenderUtils.internalSubmittedOrSelectedValuesAsSet^M
> // That routine calls getConvertedStringValue(); which always returns strings. Hence lookupSet should always be compared to itemStrValue.^M
> boolean checked = lookupSet.contains(itemStrValue);^M
HtmlRendererUtils.java:
457,458c460,464
< if ((useSubmittedValue && lookupSet.contains(itemStrValue))^M
< || (!useSubmittedValue && lookupSet.contains(itemValue))) {^M
—
> // if ((useSubmittedValue && lookupSet.contains(itemStrValue))^M
> // || (!useSubmittedValue && lookupSet.contains(itemValue))) {^M
> // HAN - the myfaces code does not work with a converter. The lookupSet=getS*ValuesAsSet() ultimately calls RenderUtils.internalSubmittedOrSelectedValuesAsSet^M
> // That routine calls getConvertedStringValue(); which always returns strings. Hence lookupSet should always be compared to itemStrValue.^M
> if (lookupSet.contains(itemStrValue)) {^M
Attachments
Issue Links
- is duplicated by
-
MYFACES-669 Validation error
- Closed
-
MYFACES-852 Exception while using SelectManyListbox, SelectManyCheckbox or SelectOneRadio with a Converter.
- Closed