2015-11-13 2 views
0

Необходимо сохранить нулевое значение для булевой переменной. Когда я попытался отправить форму без каких-либо входных проверок, у меня есть «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)); 

Что в этом плохого?

ответ

1

В вашем шаблоне Boolean. HTML-флажки не являются tristate, они либо true, либо false.

+0

Да, поэтому я добавил скрытый ввод с пустым значением. Он отправляется при отправке '_myVariable:' Но по некоторым причинам контроллер получил false –

+0

@ J.Dogger. ''myVariable сообщает Spring, что присутствует' myVariable', даже если он не отправлен как параметр запроса. Spring затем интерпретирует отсутствующий параметр запроса - поскольку флажок не был отмечен - как false. – chrylis

0

Ваша конфигурация hbm.xml не имеет значения null = "false", hibernate не ожидает иметь дело с нулевыми значениями. Таким образом, ваша база данных не должна давать спящий режим для нулевого значения для этого поля, поэтому, возможно, значение hibernate handlea null равно false.

Смежные вопросы