2017-01-16 31 views
1

WorkOrderに割り当てることができるユーザーのドロップダウンリストがあります。ここで、User to WorkOrderはOneToMany関係です。問題はユーザーIDにNULL値を割り当てる方法ですか? 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> 

答えて

0

JavaのintNULLに変更できませんので、idをintからIntegerに変更してください。整数はnullでもかまいません。 また、WorkOrderDAOImpl.javaにifステートメントを追加して、user.idがnullに設定されているかどうかを確認しました。

ここに私の更新されたコードがあります。

@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); 


} 
関連する問題