[ 
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

Reply via email to