myfaces-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Thomas A. Valletta (JIRA)" <myfaces-...@incubator.apache.org>
Subject [jira] Commented: (MYFACES-677) HtmlSelectOneMenu conversion error with SelectItemGroup
Date Fri, 07 Oct 2005 12:35:48 GMT
    [ http://issues.apache.org/jira/browse/MYFACES-677?page=comments#action_12331586 ] 

Thomas A. Valletta commented on MYFACES-677:
--------------------------------------------

Yes.  I apologise for the poor explanation.  This would only occur if you have a converter
on the component and are using SelectItemGroups.  The way that the code is currently, the
"item" is a SelectItemGroup.  When item.getValue() is called an empty string is returned (that
might be the bug).  Because there is a converter and the empty string is an instance of String,
the converter is run against the SelectItemGroup.  That is where you will likely have conversion
errors.  It is likely that any converter that will be applied to the component will not be
expecting a SelectItemGroup.  Instead it will be expecting the object returned from item.getValue()
where item is a SelectItem.

Hope this clarifies.
Tom

> HtmlSelectOneMenu conversion error with SelectItemGroup
> -------------------------------------------------------
>
>          Key: MYFACES-677
>          URL: http://issues.apache.org/jira/browse/MYFACES-677
>      Project: MyFaces
>         Type: Bug
>     Versions: 1.1.0
>  Environment: JRE 1.4.2_08 , Tomcat 4.1.27, Firefox
>     Reporter: Thomas A. Valletta
>     Assignee: Mathias Broekelmann

>
> While attempting to match the selected SelectItem for an HtmlSelectOneMenu, the matchValue
method of SelectItemsUtil calls the getConvertedValue method before checking to see if the
SelectItem is really a SelectItemGroup.  This causes conversion errors.  If the SelectItem.getValue()
is null (I think that it was before MyFaces1.1) then it would not call the getConvertedValue.
 But now you get one ConversionException for every SelectItemGroup that has to be checked
before the matching SelectItem is found.
> Here is the method stack:
> _SelectItemsUtil.matchValue(FacesContext, Object, Iterator, _SelectItemsUtil$_ValueConverter)
line: 46
> HtmlSelectOneMenu(UISelectOne).validateValue(FacesContext, Object) line: 52
> HtmlSelectOneMenu(UIInput).validate(FacesContext) line: 269
> HtmlSelectOneMenu(UIInput).processValidators(FacesContext) line: 144
> Here is the method in MyFaces 1.1:
>     /**
>      * @param context the faces context
>      * @param value the value to check
>      * @param converter 
>      * @param iterator contains instances of SelectItem
>      * @return if the value of a selectitem is equal to the given value
>      */
>     public static boolean matchValue(FacesContext context, Object value,
>                     Iterator selectItemsIter, _ValueConverter converter)
>     {
>         while (selectItemsIter.hasNext())
>         {
>             SelectItem item = (SelectItem) selectItemsIter.next();
>             Object itemValue = item.getValue();
>             if(converter != null && itemValue instanceof String)
>             {
>                 itemValue = converter.getConvertedValue(context, (String)itemValue);
>             }
>             if (value.equals(itemValue))
>             {
>                 return true;
>             }
>             if (item instanceof SelectItemGroup)
>             {
>                 SelectItemGroup itemgroup = (SelectItemGroup) item;
>                 SelectItem[] selectItems = itemgroup.getSelectItems();
>                 if (selectItems != null
>                                 && selectItems.length > 0
>                                 && matchValue(context, value, Arrays.asList(
>                                                 selectItems).iterator(), converter))
>                 {
>                     return true;
>                 }
>             }
>         }
>         return false;
>     }
> Thanks,
> Tom

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


Mime
View raw message