JSF with Enum 'Validation Error: Value is not valid'

Posted by Shamik on Stack Overflow See other posts from Stack Overflow or by Shamik
Published on 2010-03-30T21:27:47Z Indexed on 2010/03/30 21:43 UTC
Read the original article Hit count: 854

Filed under:

I have an enum whose code is like this -

public enum COSOptionType {

    NOTAPPLICABLE,
    OPTIONAL,
    MANDATORY;

    private String[] label = { "Not Applicable", "Optional", "Mandatory"};

    @Override
    public String toString() {

        return label[this.ordinal()];
    }

    public static COSOptionType getCOSOption(String value) {
        int ivalue = Integer.parseInt(value);
        switch(ivalue) {
        case 0:
            return NOTAPPLICABLE;
        case 1: 
            return OPTIONAL;
        case 2:
            return MANDATORY;
         default:
                throw new RuntimeException("Should not get this far ever!");
        }
    }

}

I have the converter to convert the enum type

public class COSEnumConverter implements Converter {

    public Object getAsObject(FacesContext context, UIComponent comp, String value) {

        return COSOptionType.getCOSOption(value);
    }

    public String getAsString(FacesContext context, UIComponent comp, Object obj) {
        if (obj instanceof String) {
            return (String) obj;
        }
        COSOptionType type = (COSOptionType) obj;
        int index = type.ordinal();
        return ""+index;
    }

}

The view looks like this

 <h:selectOneMenu value="#{controller.type}" id="smoking">                                           
   <f:selectItems value="#{jnyController.choices}" />
 </h:selectOneMenu>

Here is the code for create choices

private List<SelectItem> createChoicies() {
    List<SelectItem> list = new ArrayList<SelectItem>();
    for (COSOptionType cos : COSOptionType.values()) {
        SelectItem item = new SelectItem();
        item.setLabel(cos.toString());
        item.setValue("" + cos.ordinal());
        list.add(item);
    }
    return list;
}

I do not understand why this would throw "validation error" all the time ? I can debug and see that the converter is working fine.

NOTE: I am using JSF 1.1

© Stack Overflow or respective owner

Related posts about jsf