public class GenericEnumConverter extends Object implements javax.faces.convert.Converter
UISelectMany components whose value is been bound to a
List<E> property where E is an enum. Even though JSF has already a built-in
EnumConverter, this doesn't work for a List<E> property as the generic type information
E is lost during runtime. The list would be filled with unconverted String values instead
which may in turn cause ClassCastException.
If replacing the List<E> property by a E[] (e.g. Role[] in case of a
Role enum) is not an option due to design restrictions (e.g. JPA @ElementCollection, etc),
then you'd need to create an explicit converter for the enum type like follows:
@FacesConverter("roleConverter")
public class RoleConverter extends EnumConverter {
public RoleConverter() {
super(Role.class);
}
}
However, creating a new converter for every single enum type, only and only for use in UISelectMany with a
List<E> property, may be a bit clumsy. This generic enum converter is intended to remove the need
to create a new enum converter every time.
This converter is available by converter ID omnifaces.GenericEnumConverter. Basic usage example:
<h:selectManyCheckbox value="#{bean.selectedEnums}" converter="omnifaces.GenericEnumConverter">
<f:selectItems value="#{bean.availableEnums}" />
</h:selectManyCheckbox>
| Constructor and Description |
|---|
GenericEnumConverter() |
| Modifier and Type | Method and Description |
|---|---|
Object |
getAsObject(javax.faces.context.FacesContext context,
javax.faces.component.UIComponent component,
String submittedValue) |
String |
getAsString(javax.faces.context.FacesContext context,
javax.faces.component.UIComponent component,
Object modelValue) |
Copyright © 2012–2014 OmniFaces. All rights reserved.