package org.richfaces.demo.autocomplete; import java.io.Serializable; import javax.faces.component.UIComponent; import javax.faces.context.FacesContext; import javax.faces.convert.Converter; import javax.faces.convert.FacesConverter; import org.richfaces.demo.CountriesBean; import org.richfaces.demo.Country; @FacesConverter(value = "autocompleteBeanConverter") public class AutocompleteBeanConverter implements Converter, Serializable { public Object getAsObject(FacesContext facesContext, UIComponent uiComponent, String value) { System.out.println("AutocompleteBeanConverter#getAsObject is called"); if (value == null || value.equals("")) { return null; } else { CountriesBean countriesBean = (CountriesBean) FacesContext.getCurrentInstance().getExternalContext() .getApplicationMap().get("countriesBean"); for (Country country : countriesBean.getCountries()) { if (country.getName().equals(value)) { return country; } } return null; } } public String getAsString(FacesContext facesContext, UIComponent uiComponent, Object value) { System.out.println("AutocompleteBeanConverter#getAsString is called"); if (value != null) { Country bean; try { bean = (Country) value; return bean.getName(); } catch (ClassCastException e) { System.out.println("Cannot cast " + value + "to Country"); return null; } } else { return null; } } }