public class SelectItemsConverter extends Object implements Converter
 The omnifaces.SelectItemsConverter allows you to populate a selection component with complex Java
 model objects (entities) as value of <f:selectItems> and have JSF convert those
 automatically back without the need to provide a custom converter which may need to do the job based on
 possibly expensive service/DAO operations. This converter automatically converts based on the Object.toString()
 of the selected item.
 
 This converter is available by converter ID omnifaces.SelectItemsConverter. Just specify it in the
 converter attribute of the selection component holding <f:selectItems>.
 
 <h:selectOneMenu value="#{bean.selectedItem}" converter="omnifaces.SelectItemsConverter">
     <f:selectItems value="#{bean.availableItems}" />
 </h:selectOneMenu>
 
 toString() implementation
 The base converter uses by default the toString() method of the entity to uniquely identify
 the instance during the conversion. This is sufficient if your (abstract base) entity has a
 toString() implementation which looks something like this:
 
 @Override
 public String toString() {
     return String.format("%s[id=%d]", getClass().getSimpleName(), getId());
 }
 
 
 By the way, you should also make sure that your entity
 has a good equals() and hashCode() implementation, otherwise JSF won't be able
 to set the right entity back in the model. Please note that this problem is in turn unrelated to the
 SelectItemsConverter, you would have faced the same problem when using any other converter.
 
toString() implementation
 However, if the entity doesn't have a toString() implementation (and thus relies on the default
 fqn@hashcode implementation), or the existing implementation doesn't necessarily uniquely
 identify the instance, and you can't implement/change it, then it is recommended to extend the
 SelectItemsConverter class and override only the getAsString method wherein
 the desired implementation is provided. For example:
 
 @FacesConverter("exampleEntitySelectItemsConverter")
 public class ExampleEntitySelectItemsConverter extends SelectItemsConverter {
     @Override
     public String getAsString(FacesContext context, UIComponent component, Object value) {
         Long id = (value instanceof ExampleEntity) ? ((ExampleEntity) value).getId() : null;
         return (id != null) ? String.valueOf(id) : null;
     }
 }
 
 
 Again, you do not need to override the getAsObject() method which would only
 need to perform possibly expensive service/DAO operations. The SelectItemsConverter base
 converter will already do it automatically based on the available items and the getAsString()
 implementation.
 
 An alternative is to switch to SelectItemsIndexConverter, which will convert based on the position (index)
 of the selected item in the list instead of the Object.toString() of the selected item.
SelectItemsUtils, 
SelectItemsCollectorDATETIMECONVERTER_DEFAULT_TIMEZONE_IS_SYSTEM_TIMEZONE_PARAM_NAME| Constructor and Description | 
|---|
| SelectItemsConverter() | 
| Modifier and Type | Method and Description | 
|---|---|
| Object | getAsObject(FacesContext context,
           UIComponent component,
           String value) | 
| String | getAsString(FacesContext context,
           UIComponent component,
           Object value) | 
public Object getAsObject(FacesContext context, UIComponent component, String value)
getAsObject in interface Converterpublic String getAsString(FacesContext context, UIComponent component, Object value)
getAsString in interface ConverterCopyright © 2012–2014 OmniFaces. All rights reserved.