I have defined my checkbox as shown below (according to one of the previous post on the subject)

<spring:bind path="form.someBooleanProperty">
<input type="hidden" name="_${status.expression}">
<input type="checkbox" name="${status.expression}" id="${status.expression}"
<c:if test="${status.value}">checked</c:if> />
</spring:bind>

When validation fails for another form value, then the value is set back to the original value and the user check or unckeck will be lost. So the user will have to check/uncheck the box again. The input type=text seem to retain the user changes but not the checkbox?