public void handleField()

in reference/src/main/java/org/apache/sling/cms/reference/forms/impl/fields/TextfieldHandler.java [83:140]


    public void handleField(SlingHttpServletRequest request, Resource fieldResource, Map<String, Object> formData)
            throws FormException {
        log.trace("handleField");
        String name = FieldHandler.getName(fieldResource);
        String value = request.getParameter(name);
        if (StringUtils.isBlank(value)) {
            if (FieldHandler.isRequired(fieldResource)) {
                throw new FormException("Field " + name + " not set and is required");
            } else {
                log.debug("Ignoring unset value: {}", name);
            }
        } else {
            validateValue(fieldResource, value);
            log.debug("Setting value for: {}", name);

            String saveAs = fieldResource.getValueMap().get("saveAs", "string");
            String type = fieldResource.getValueMap().get("type", String.class);

            if ("file".equals(type)) {
                RequestParameter param = request.getRequestParameter(name);
                try {
                    formData.put(name, param.getInputStream());
                } catch (IOException e) {
                    throw new FormException("Failed to read file input: " + name, e);
                }
                formData.put(name + ".fileName", param.getFileName());
                if (param.getContentType() != null) {
                    formData.put(name + ".contentType", param.getContentType());
                }
            } else if ("date".equals(saveAs)) {
                if (!dateFormats.containsKey(type)) {
                    throw new FormException("Field " + name + " is not a date type");
                }
                try {
                    Calendar cal = Calendar.getInstance();
                    cal.setTime(new SimpleDateFormat(dateFormats.get(type)).parse(value));
                    formData.put(name, cal);
                } catch (ParseException e) {
                    throw new FormException("Failed to parse date from " + value);
                }
            } else if ("double".equals(saveAs)) {
                try {
                    formData.put(name, Double.parseDouble(value));
                } catch (NumberFormatException nfe) {
                    throw new FormException("Failed to parse double from " + value);
                }
            } else if ("integer".equals(saveAs)) {
                try {
                    formData.put(name, Integer.parseInt(value, 10));
                } catch (NumberFormatException nfe) {
                    throw new FormException("Failed to parse integer from " + value);
                }
            } else {
                formData.put(name, value);
            }
        }

    }