Hi Martin, The purpose of this conversion is that the value of the SelectItems may be a String, but the real (already converted) value of the UISelectMany may be something else, e.g. Float. Imagine the following scenario:
<h:selectManyCheckbox value="#{myBean.inputFloatArray}"> <f:selectItem itemValue="1.1" /> <f:selectItem itemValue="1.2" /> <f:selectItem itemValue="1.3" /> </h:selectManyCheckbox> The itemValues of all SelectItems are Strings, but the UISelectMany points to a property which is of type Float[]. Now because of the fact that all Strings can be converted into Floats, this scenario must work. If you now take a look at _SelectItemsUtil.matchValue(), you can see that not the component's value, but the value of the SelectItem is converted via the _ValueConverter: SelectItem item = selectItemsIter.next(); Object itemValue = item.getValue(); if(converter != null && itemValue instanceof String) { itemValue = converter.getConvertedValue(context, (String)itemValue); } and then matched against the real value (again which is e.g. Float): if (value==itemValue || value.equals(itemValue)) { return true; } Furthermore the converter has to be invoked with the wrapped String in a String[], because UISelectMany.getConvertedValue() needs a submittedValue of type String[]. Is this clear for you or should I explain it in more detail? Regards, Jakob 2010/8/27 Martin Koci <martin.k...@aura.cz> > Hi, > > > what is the purpose of _SelectItemsUtil._ValueConverter in > UISelectMany.validateValue(FacesContext, Object) ? > > Two weird things: > > 1) it wraps value into new String[] { value } > 2) it calls UISelectMany.this.getConvertedValue and it leads to > Rendered.getConvertedValue call > > I don't see sence in call of UISelectMany.this.getConvertedValue > because this already done: we are in method validateValue here and > conversion with Renderer.getConvertedValue is done already. This causes > calls to Renderer.getConvertedValue during process validation which is > unintented I think. > > > Regards, > > Martin Kočí > > > -- Jakob Korherr blog: http://www.jakobk.com twitter: http://twitter.com/jakobkorherr work: http://www.irian.at