src/main/java/de/jformchecker/GenericFormBuilder.java
String generateHtmlForElement(boolean firstRun, MessageSource messageSource, FormCheckerElement elem, boolean html5Validation) {
		InputElementStructure inputStruct = new InputElementStructure();
		// errors
		ValidationResult vr = getErrors(elem, firstRun);
		if (!vr.isValid()) {
			inputStruct.setErrors(formatError(messageSource.getMessage(vr)));
		}

		// label
		boolean displayLabel = !StringUtils.isEmpty(elem.getDescription());
		if (displayLabel) {
			inputStruct.setLabel(getLabelForElement(elem, getLabelAttributes(elem), firstRun));
		}
		// input tag
		Map<String, String> attribs = new LinkedHashMap<>();
		addAttributesToInputFields(attribs, elem);
		inputStruct.setInput(elem.getInputTag(attribs, messageSource, html5Validation));
		// help tag
		if (!StringUtils.isEmpty(elem.getHelpText())) {
			inputStruct.setHelp(getHelpTag(elem.getHelpText(), elem));
		}
		return getCompleteRenderedInput(inputStruct, elem, firstRun);
	}
String generateHtmlForElement(boolean firstRun, MessageSource messageSource, FormCheckerElement elem, boolean html5Validation) {
		InputElementStructure inputStruct = new InputElementStructure();
		// errors
		ValidationResult vr = getErrors(elem, firstRun);
		if (!vr.isValid()) {
			inputStruct.setErrors(formatError(messageSource.getMessage(vr)));
		}

		// label
		boolean displayLabel = !StringUtils.isEmpty(elem.getDescription());
		if (displayLabel) {
			inputStruct.setLabel(getLabelForElement(elem, getLabelAttributes(elem), firstRun));
		}
		// input tag
		Map<String, String> attribs = new LinkedHashMap<>();
		addAttributesToInputFields(attribs, elem);
		inputStruct.setInput(elem.getInputTag(attribs, messageSource, html5Validation));
		// help tag
		if (!StringUtils.isEmpty(elem.getHelpText())) {
			inputStruct.setHelp(getHelpTag(elem.getHelpText(), elem));
		}
		return getCompleteRenderedInput(inputStruct, elem, firstRun);
	}
builds the html for one element