【问题标题】:Bind null value to a Boolean checkbox将空值绑定到布尔复选框
【发布时间】:2015-11-13 10:16:51
【问题描述】:

需要将空值保存到布尔变量。 当我尝试提交一个没有检查任何输入的表单时,我在 myVariable 中有一个“假”而不是 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));

这有什么问题?

【问题讨论】:

    标签: java spring jsp


    【解决方案1】:

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

    【讨论】:

    • 是的,这就是为什么我添加了带有空值的隐藏输入。它是在提交_myVariable: 期间发送的,但由于某些原因,控制器收到了错误
    • @J.Dogger _myVariable 告诉 Spring myVariable 存在,即使它没有作为请求参数发送。然后 Spring 将缺少的请求参数解释为 false。
    【解决方案2】:

    你的 hbm.xml 配置有 not-null="false",hibernate 不希望处理空值。所以你的数据库不应该给休眠这个字段一个空值,所以也许休眠将空值处理为false。

    【讨论】:

      猜你喜欢
      • 2015-04-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-16
      • 1970-01-01
      • 1970-01-01
      • 2012-03-11
      • 1970-01-01
      相关资源
      最近更新 更多