[ 
https://issues.apache.org/jira/browse/TOMAHAWK-1522?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jakob Korherr resolved TOMAHAWK-1522.
-------------------------------------

    Fix Version/s: 1.1.10-SNAPSHOT
       Resolution: Fixed

> Introduce valueType attribute for UISelectMany components
> ---------------------------------------------------------
>
>                 Key: TOMAHAWK-1522
>                 URL: https://issues.apache.org/jira/browse/TOMAHAWK-1522
>             Project: MyFaces Tomahawk
>          Issue Type: Improvement
>    Affects Versions: 1.1.9
>         Environment: Tomahawk for JSF 2.0
>            Reporter: Jakob Korherr
>            Assignee: Jakob Korherr
>             Fix For: 1.1.10-SNAPSHOT
>
>
> Since JSF 2.0 allows Collections as values of UISelectMany components, it 
> introduced the attribute collectionType on every UISelectMany component to 
> specify the type of Collection which should be used (e.g. ArrayList). The 
> only problem by allowing Collections is that it is not possible in Java to 
> get the value type of a type-safe Collection in contrast to arrays where this 
> is possible. Thus the System needs a way to get the expected value type in 
> order to get the right converter. One way (which is also implemented in 
> MyFaces core) is to look at the select items to get a by-type-converter, but 
> unfortunately this does not work in some scenarios.
> Thus Tomahawk for JSF 2.0 introduces the valueType attribute for all its 
> UISelectMany components (t:selectManyCheckbox, t:selectManyListbox, 
> t:selectManyMenu and t:selectManyPicklist) to specify the expected value 
> type. The valueType attribute (just like the collectionType attribute) can be 
> a String representing a FQCN, a Class or a ValueExpression pointing to a 
> String or a Class.
> Example:
> The view:
> <t:selectManyCheckbox value="#{myBean.input}" valueType="java.lang.Float">
>     <f:selectItem itemValue="1.2" />
>     <f:selectItem itemValue="1.3" />
>     <f:selectItem itemValue="1.4" />
> </t:selectManyCheckbox>
> The related getter in the bean myBean:
> public Collection<Float> getInput()
> {
>         return input;
> }
> Without the valueType information, the component would create a Collection 
> containing the selected values as _Strings_, thus leading to a 
> ClassCastException when accessing them. By specifying 
> valueType="java.lang.Float", the component knows that the expected value type 
> of the Collection is Float and is able to obtain a by-type converter for it. 
> Thus the component will create a Collection containing the selected values as 
> Floats (actually the expected behavior).

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to