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