如何在我的下拉列表中将值设置为NULL?

时间:2017-01-16 17:40:36

标签: java html hibernate jsp spring-mvc

我有一个用户的下拉列表,我可以将其分配给 WorkOrder 。 User to WorkOrder的用户是OneToMany关系。问题是如何为用户ID 分配NULL值?如果我没有将它设置为NULL,它可以正常工作,我可以从列表中指定任何名称。

如果我使用此代码并在我的jsp中选择NULL <form:option value="${null}" label="null" />,则会收到错误:

Failed to convert property value of type java.lang.String to required type int for property user.id; nested exception is java.lang.NumberFormatException: For input string: ""

这是 WorkorderDAOImpl

    @Override
public void saveWorkOrder(WorkOrder theWorkOrder) {

    // get the current hibernate session
    Session currentSession = sessionFactory.getCurrentSession();

    User user = theWorkOrder.getUser();
    System.out.println("workorder: " + theWorkOrder);
    System.out.println("user: " + user);

    //save/update the work order
    currentSession.saveOrUpdate(theWorkOrder);


}

我的workorder-form.jsp我省略了一些标签

    <form:errors path="workorder.*"/>
    <form:errors path="user.*"/>

<form:form action="saveWorkOrder" modelAttribute="workorder" method="POST">

    <!-- need to assotiate the data with workorder id -->
    <form:hidden path="id"/>


    <table>
        <tbody>


            <tr>
                <td><label>User name:</label></td>
                <td><form:input path="user.userName"/></td>


            </tr>

            <tr>

            <td><label>User:</label></td>
                <td><form:select path="user.id">
                    <form:option value="${null}" label="null" />
                    <form:options items="${users}" 
                 itemLabel="userName" itemValue="id"  
                    />

                    </form:select>

1 个答案:

答案 0 :(得分:0)

原来,int中的NULL不能id,因此将我的Integer从int更改为if。整数可以为null。 我还在WorkOrderDAOImpl.java中添加了 @Override public void saveWorkOrder(WorkOrder theWorkOrder) { System.out.println(" \n Printing from WorkOrder : \n"); // get the current hibernate session Session currentSession = sessionFactory.getCurrentSession(); User user = theWorkOrder.getUser(); if (user.getId() == null) { theWorkOrder.setUser(null); } //save/update the work order currentSession.saveOrUpdate(theWorkOrder); } 语句,以检查user.id是否设置为null。

这是我的更新代码。

{{1}}