@Override
  public String getAsString(FacesContext context, UIComponent component, Object value) {
    if ((context == null) || (component == null)) {
      throw new NullPointerException();
    }

    if (value == null) {
      return "";
    }

    String val = null;
    WidgetValues widgetValues = DojoServerFacesUtil.getWidgetValuesInstance(context, component);
    if (widgetValues != null) {
      if (value instanceof Integer)
        val = widgetValues.getDisplayedValue((Integer) value).toString();
      else {
        if (widgetValues.getFirst().getClass().equals(value.getClass())) {
          int valueIndex = widgetValues.getValueIndex(value);
          if (valueIndex != -1) {
            val = widgetValues.getDisplayedValue(valueIndex);
          } else {
            val = value.toString();
          }
        } else val = value.toString();
      }
    }
    return val;
  }
  @Override
  public Object getAsObject(FacesContext context, UIComponent component, String value) {

    if ((context == null) || (component == null)) {
      throw new NullPointerException();
    }

    if (value == null) {
      return null;
    }

    Integer obj = null;
    WidgetValues widgetValues = DojoServerFacesUtil.getWidgetValuesInstance(context, component);
    if (widgetValues != null) {
      obj = new Integer(widgetValues.getDisplayedValueIndex(value));
    }

    if ((Integer) obj == -1) {
      FacesMessage errMessage = new FacesMessage("Undefined value!");
      errMessage.setSeverity(FacesMessage.SEVERITY_ERROR);
      throw new ConverterException(errMessage);
    }

    return obj;
  }