Как сохранить динамические данные в моей базе данных с тем же именем, используя Struts 2

Я хотел бы знать, как сохранить несколько данных одновременно с одинаковыми именами в моей базе данных с помощью Struts2 У меня есть несколько элементов, количество, количество, описание, цена за единицу... и они находятся внутри в динамической таблице.. Вот мой код ниже

 public String createPO() {

    if (isAuthorizedUser(authorizedUsers)) {
        dao = HibernateDAOFactory.getInstance();
        order = new OrderEntity()

        order.setQuantity(quantity);
        order.setAmount(amount);
        order.setDescription(description);
        order.setUnit(unit);
        order.setUnitPrice(unitPrice);
        order.setUser(user);
        System.out.println(order.getOrderid());
        dao.getOrderDAO().isSaved(order);

        return SUCCESS;
    }
    return logout();
}

И это моя страница JSP. После того, как я нажму кнопку "Добавить", он создаст другие поля с такими же именами.

<table id="orderTable" class="table table-bordered">

<tr>

<td style="background-color: #40926f; color: white;"><strong><center>Quantity</center></strong></td>
<td style="background-color: #40926f; color: white;"><strong><center>Unit</center></strong></td>
<td style="background-color: #40926f; color: white;"><strong><center>Description</center></strong></td>
<td style="background-color: #40926f; color: white;"><strong><center>Unit Price</center></strong></td>
<td style="background-color: #40926f; color: white;"><strong><center>Amount</center></strong></td>
<td style="background-color: #40926f; color: white;"><strong><center>Add</center></strong></td>
<td style="background-color: #40926f; color: white;"><strong><center>Delete</center></strong></td>
</tr>                                   
<tr id="orderDetailsTr" class="order">
    <td>
        <center>
            <input required style="height: 35px; width: 100px;"   type="text" placeholder="QTY" 
             name="quantity" 
            id="quantity" class="quantity" >
            </center>
    </td>
<td>
<center>
<input required style="height: 35px; width: 200px;"   type="text" placeholder="Unit" 
             name="unit"
            id="unit"  >
            </center>
            </td>
<td>
<center>
<input required style="height: 35px; width: 300px;"   type="text" placeholder="Description" 
             name="description"
            id="description"  >
            </center>
            </td>
<td>
<center>
<input required style="height: 35px; width: 100px;"   type="text" placeholder="Unit Price" 
             name="unitPrice" 
            id="unitPrice" class="unitPrice" >
            </center>
            </td>
<td>
<center>
<input  required style="height: 35px; width: 100px;"   type="text" placeholder="Amount" 
             name="amount"
            id="amount" class="amount"   >
            </center>
            </td>

             <td><input type="button" class="btn btn-primary" id="addmorePOIbutton" value="Add"/></td>    
</tr>    
</table>

1 ответ

Чтобы преобразовать данные из таблицы в список, вы должны использовать свойство

List<OrderEntity> list = new ArrayList<OrderEntity>();
//getter and setter

public String createPO() {
    if (isAuthorizedUser(authorizedUsers)) {
      dao = HibernateDAOFactory.getInstance();
      for (List<OrderEntity> order: list){
        System.out.println(order.getOrderid());
        dao.getOrderDAO().isSaved(order);
      }
      return SUCCESS;
    }
    return logout();
}

В JSP вы должны изменить имена полей ввода, чтобы они включали привязку к свойству списка.

Вы можете использовать JavaScript для изменения имен перед отправкой события

for(var i=0; i < table.rows.length; i++) {  
    var quantity= table.rows[i].cells[0].getElementsByTagName("input");
    quantity[0].name= "list["+i+"].quantity"; 
    ...
}
Другие вопросы по тегам