Необходимо сохранить нулевое значение для булевой переменной. Когда я попытался отправить форму без каких-либо входных проверок, у меня есть «false» в myVariable вместо null. Свойство имеет тип Boolean на форме. Вот часть моего кода Jsp:Привязать нулевое значение к булевому флажку
<spring:bind path="form.myVariable">
<table cellpadding="0" cellspacing="0" border="0" >
<td valign="middle">
<input type="checkbox" name="<c:out value="${status.expression}"/>" value="true" <c:if test='${status.value == "true"}'>checked</c:if> />
</td>
<td valign="middle">
<input type="checkbox" name="<c:out value="${status.expression}"/>" value="false" <c:if test='${status.value == "false"}'>checked</c:if> />
</td>
<input type="hidden" name="_<c:out value="${status.expression}"/>" value="">
</table>
Свойство конфигурируется в hbm.xml так:
<property name="myVariable" not-null="false" type="java.lang.Boolean" access="field" column="MY_VARIABLE"/>
Я также добавил CustomBooleanEditor к связующему в моем контроллер:
binder.registerCustomEditor(Boolean.class, new CustomBooleanEditor("true", "false", true));
Что в этом плохого?
Да, поэтому я добавил скрытый ввод с пустым значением. Он отправляется при отправке '_myVariable:' Но по некоторым причинам контроллер получил false –
@ J.Dogger. ''myVariable сообщает Spring, что присутствует' myVariable', даже если он не отправлен как параметр запроса. Spring затем интерпретирует отсутствующий параметр запроса - поскольку флажок не был отмечен - как false. – chrylis