You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@myfaces.apache.org by "Nikolay Petrov (JIRA)" <de...@myfaces.apache.org> on 2006/09/22 21:54:24 UTC

[jira] Commented: (MYFACES-1328) UISelectOne and UISelectMany fail with custom converter that returns java.lang.String from getAsObject() method.

    [ http://issues.apache.org/jira/browse/MYFACES-1328?page=comments#action_12436990 ] 
            
Nikolay Petrov commented on MYFACES-1328:
-----------------------------------------

I really don't see a reason to put conversion:
                if(converter != null && itemValue instanceof String)
                {
                    itemValue = converter.getConvertedValue(context, (String)itemValue);
                }
in this case. A possible solution would be to remove conversion at all (as it is within ri).

May be there is some special case to handle out. Can anybody made something up?


> UISelectOne and UISelectMany fail with custom converter that returns java.lang.String from getAsObject() method.
> ----------------------------------------------------------------------------------------------------------------
>
>                 Key: MYFACES-1328
>                 URL: http://issues.apache.org/jira/browse/MYFACES-1328
>             Project: MyFaces Core
>          Issue Type: Bug
>    Affects Versions: 1.1.4-SNAPSHOT
>            Reporter: Alexey Maslov
>         Attachments: reproducer.zip
>
>
> The problem seems to be in javax.faces.component._SelectItemsUtil.matchValue(FacesContext context, Object value, Iterator selectItemsIter, _ValueConverter converter) method.
> Line 63-72:
>                 Object itemValue = item.getValue();
>                 if(converter != null && itemValue instanceof String)
>                 {
>                     itemValue = converter.getConvertedValue(context, (String)itemValue);
>                 }
>                 if (value==itemValue || value.equals(itemValue))
>                 {
>                     return true;
>                 }
> If item's value is java.lang.String then this code does duplicate conversion making matchValue() return false and subsequently resulting in error in calling method (validateValue() in javax.faces.component.UISelectOne and javax.faces.component.UISelectMany).

-- 
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