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
}