protected void renderInputBegin()

in myfaces-html5-core/src/main/java/org/apache/myfaces/html5/renderkit/input/HtmlInputNumberSliderRenderer.java [61:105]


    protected void renderInputBegin(FacesContext facesContext, UIComponent uiComponent) throws IOException
    {
        super.renderInputBegin(facesContext, uiComponent);

        HtmlInputNumberSlider component = (HtmlInputNumberSlider) uiComponent;

        double min = DEFAULT_MIN;
        double max = DEFAULT_MAX;

        // get min and max
        Validator[] validators = component.getValidators();
        for (Validator validator : validators)
        {
            if (validator instanceof DoubleRangeValidator)
            {
                DoubleRangeValidator doubleRangeValidator = (DoubleRangeValidator) validator;
                min = doubleRangeValidator.getMinimum();
                max = doubleRangeValidator.getMaximum();
                break;
            }
            else if (validator instanceof LongRangeValidator)
            {
                LongRangeValidator longRangeValidator = (LongRangeValidator) validator;
                min = longRangeValidator.getMinimum();
                max = longRangeValidator.getMaximum();
                break;
            }
        }

        if (max <= min)
        {
            throw new FacesException("Maximum must be larger than minimum for component " + DebugUtils.getPathToComponent(uiComponent) + ". "
                    + "These values are calculated from the first attached DoubleRangeValidator or LongRangeValidator");
        }

        double calculatedStep = _calculateStep(component, min, max);

        // and render them
        facesContext.getResponseWriter().writeAttribute(HTML5.MIN_ATTR, min, null);
        facesContext.getResponseWriter().writeAttribute(HTML5.MAX_ATTR, max, null);
        facesContext.getResponseWriter().writeAttribute(HTML5.STEP_ATTR, calculatedStep, null);

        // don't render Html5 required attr, since it is not supported by <input type="range">
        // but required will be checked in validation stage
    }