You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@myfaces.apache.org by "Ken Weiner (JIRA)" <my...@incubator.apache.org> on 2005/07/28 20:34:20 UTC

[jira] Commented: (MYFACES-154) checkbox and listbox do not handler converters well

    [ 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