@Override
  public FormRowSet formatData(FormData formData) {
    FormRowSet rowSet = null;

    // get value
    String id = getPropertyString(FormUtil.PROPERTY_ID);
    if (id != null) {
      String[] values = FormUtil.getElementPropertyValues(this, formData);
      if (values != null && values.length > 0) {
        // check for empty submission via parameter
        String[] paramValues = FormUtil.getRequestParameterValues(this, formData);
        if ((paramValues == null || paramValues.length == 0)
            && FormUtil.isFormSubmitted(this, formData)) {
          values = new String[] {""};
        }

        // formulate values
        String delimitedValue = FormUtil.generateElementPropertyValues(values);

        // set value into Properties and FormRowSet object
        FormRow result = new FormRow();
        result.setProperty(id, delimitedValue);
        rowSet = new FormRowSet();
        rowSet.add(result);
      }
    }

    return rowSet;
  }
  @Override
  public String renderTemplate(FormData formData, Map dataModel) {
    String template = "selectBox.ftl";

    // set value
    String[] valueArray = FormUtil.getElementPropertyValues(this, formData);
    List<String> values = Arrays.asList(valueArray);
    dataModel.put("values", values);

    // set options
    Collection<Map> optionMap = getOptionMap(formData);
    dataModel.put("options", optionMap);

    String html = FormUtil.generateElementHtml(this, formData, template, dataModel);
    return html;
  }