I'd like to ask for the addition of an attribute to the UISelectOne and UISelectMany components to optionally turn off the automatic list validation required by the specification. This is the same request as issue 36, but for a different reason.
My problem with the current approach is the performance. As I understand it, the current implementation performs the following steps:
1. Apply custom converter, if present.
2. Apply custom validators, if present.
3. Apply internal list validation.
Looking at the (Mojarra 2.0.3) code, the implementation for step 3 appears to iterate through the select values, converting each one to an object before comparing it to the converted entered value, until a match is found or all possibilities have been checked.
My use case is a simple table entry with probably 2-20 rows, each of which contains a currency menu (currently restricted to approx 40 common currencies). This means for each row, the system will perform on average 20 conversions from String to Currency during this validation, so I have around 200 conversions occurring for an average submission. These are redundant for me, as the converter is backed by the same list and simply does a lookup on the list to select the required Currency object from an application wide list.
Also, although the conversions from object to string used to populate the list are frequently trivial, I would think that the conversions from string to object used for validation are quite often more complicated. Date input for example. No evidence for this, just my impression.
That's just my use case, but I can imagine any number of cases where a custom converter or validator could be used which would negate the need to perform the potentially costly list traversal conversion scenario currently enforced.