package org.richfaces.sandbox.radio; import javax.faces.bean.ManagedBean; import javax.faces.bean.SessionScoped; import javax.faces.component.UIComponent; import javax.faces.context.FacesContext; import javax.faces.convert.Converter; import java.io.Serializable; import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Map; @SessionScoped @ManagedBean public class RadioBean implements Serializable { // ------------------------------ FIELDS ------------------------------ private List<SomeEntity> entities = new ArrayList<SomeEntity>(); private Converter entityConverter = new Converter() { public Object getAsObject(FacesContext context, UIComponent component, String value) { Long id; id = Long.parseLong(value); for (SomeEntity entity : entities) { if (entity.id.equals(id)) { return entity; } } return null; } public String getAsString(FacesContext context, UIComponent component, Object value) { return ((SomeEntity) value).id.toString(); } }; private List<String> options = Arrays.asList("Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"); private Map<String, String> optionsMap = new HashMap<String, String>(); private Object selectedOption; // --------------------------- CONSTRUCTORS --------------------------- public RadioBean() { optionsMap.put("first", "Master"); optionsMap.put("second", "Looser"); optionsMap.put("third", "The rest of the loosers"); entities = Arrays.asList(new SomeEntity(1L), new SomeEntity(2L), new SomeEntity(3L)); } // --------------------- GETTER / SETTER METHODS --------------------- public List<SomeEntity> getEntities() { return entities; } public Converter getEntityConverter() { return entityConverter; } public List<String> getOptions() { return options; } public Map<String, String> getOptionsMap() { return optionsMap; } public Object getSelectedOption() { return selectedOption; } public void setSelectedOption(Object selectedOption) { this.selectedOption = selectedOption; } // -------------------------- INNER CLASSES -------------------------- private static class SomeEntity { // ------------------------------ FIELDS ------------------------------ private Long id; // --------------------------- CONSTRUCTORS --------------------------- private SomeEntity(Long id) { this.id = id; } @Override public String toString() { return "SomeEntity{" + "id=" + id + '}'; } } }