[ http://issues.apache.org/jira/browse/MYFACES-154?page=comments#action_12317113 ]
Ken Weiner commented on MYFACES-154: ------------------------------------ I found the same exact problem in HtmlCheckboxRendererBase.java. The suggested patch (changing the contains method to compare itemStrValue instead of itemValue) worked for me as well in version 1.0.9. > checkbox and listbox do not handler converters well > --------------------------------------------------- > > Key: MYFACES-154 > URL: http://issues.apache.org/jira/browse/MYFACES-154 > Project: MyFaces > Type: Bug > Versions: 1.0.9 beta > Reporter: Han Lee > > 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 -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira
