Binding (multiple) checkboxes

Binding a single checkbox to a form bean

We are using xml compliant JSP so it is a bit verbose . The trick is to add a hidden input tag prefixed with an underscore. Since the browser does not return anything for an unchecked chekbox this way Spring can determine that a checkbox was set to false.

<spring:bind path="acceptDeliveryConditions">
	<input type="hidden" name="_${status.expression}"/>
	<c:choose>
		<c:when test="${status.value == true}">
			<input type="checkbox" name="${status.expression}" 
				checked="checked"/>
		</c:when>
		<c:otherwise>
			<input type="checkbox" name="${status.expression}"/>
		</c:otherwise>
	</c:choose>
</spring:bind>

Binding a multiple checkboxes to an array property of a form bean

The form contains a List named types. These are pojos that have a checked attribute. Spring sets this property after the form is submitted. In the form processing code these checked properties can be read and acted on.

<c:forEach items="${form.types}" var="type" varStatus="loopStatus">
	<spring:bind path="types[${loopStatus.index - 1}].checked">
				${status.errorCode}
				<input type="hidden" name="_${status.expression}"/>
		<c:choose>
			<c:when test="${status.value}">
				<input type="checkbox" name="${status.expression}" 
					value="true" checked="checked"/>
			</c:when>
			<c:otherwise>
				<input type="checkbox" name="${status.expression}"
					value="true"/>
			</c:otherwise>
		</c:choose>
	</spring:bind>
</c:forEach>
Enter labels to add to this page:
Please wait 
Looking for a label? Just start typing.