将空值绑定到布尔值复选框

时间:2015-11-13 10:16:52

标签: java spring jsp

需要将null值保存到布尔变量。 当我尝试提交一个没有选中任何输入的表单时,我在myVariable中有一个“false”而不是null。 该属性在表单上具有布尔类型。 这是我的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));

它出了什么问题?

2 个答案:

答案 0 :(得分:1)

该属性在您的模板中有Boolean类型。 HTML复选框不是三态,它们是真还是假。

答案 1 :(得分:0)

你的hbm.xml配置没有-not =&#34; false&#34;,hibernate不期望处理空值。所以你的数据库不应该为这个字段给hibernate一个空值,所以也许hibernate把一个空值当作false。