Thymeleaf:如何更新现有数据库行而不创建新的行集?

时间:2017-09-11 11:09:30

标签: java html mysql spring thymeleaf

在我使用spring和百里香叶的web应用程序中,我的数据库中有一个表,我需要用户更新。在下面找到我的表行。

<table class="table table-responsive">
    <thead>
    <tr>
        <th>From <a href="#"><i class="fa fa-sort-amount-asc"
                                aria-hidden="true"></i></a></th>
        <th>To <a href="#"><i class="fa fa-sort-amount-asc" aria-hidden="true"></i></a>
        </th>
        <th>th1(.min)</th>
        <th>th2</th>
        <th>th3</th>
        <th>th4 &#10095;</th>
        <th>th5</th>
        <th>th6</th>
        <th>th7</th>
        <th class="action">&nbsp;</th>
    </tr>
    </thead>
    <tbody>

    <tr th:each="ir, rowStat : *{invRows}">
        <input type="hidden"
               th:field="*{invRows[__${rowStat.index}__].fromTime}"/>
        <input type="hidden" th:field="*{invRows[__${rowStat.index}__].toTime}"/>
        <td><p th:text="${#dates.format(ir.fromTime,  'HH:mm')}"/></td>
        <td><p th:text="${#dates.format(ir.toTime,  'HH:mm')}"/></td>
        <td><input type="text"
                   th:field="*{invRows[__${rowStat.index}__].tvcDur}"/></td>
        <td><input type="text"
                   th:field="*{invRows[__${rowStat.index}__].priceR[0].price}"/>
        </td>
        <td><input type="text"
                   th:field="*{invRows[__${rowStat.index}__].priceR[1].price}"/>
        </td>
        <td><input type="text"
                   th:field="*{invRows[__${rowStat.index}__].priceR[2].price}"/>
        </td>
        <td><input type="text"
                   th:field="*{invRows[__${rowStat.index}__].lgPrice}"/></td>
        <td><input type="text"
                   th:field="*{invRows[__${rowStat.index}__].crPrice}"/></td>
        <td><input type="text"
                   th:field="*{invRows[__${rowStat.index}__].crSpots}"/></td>
        <td class="actions"></td>
    </tr>
    </tbody>
</table>  

参数与mysql数据库成功绑定。但问题是,不是更新行的现有值,而是每次保存表时一次又一次地添加整个行集。我该如何更新表格?

编辑: 我有以下下拉列表。对于每个选择,我想要一个表。即我必须保持3张桌子。怎么做?

<select class="btn btn-default dropdown-toggle" data-toggle="dropdown"
        th:value = "${inventory.id}" id="channel" name="channel">
    <option th:value="Channel">Channel</option>
    <option th:value="ch1">ch1</option>
    <option th:value="ch2">ch2</option>
    <option th:value="ch3">ch3</option>
</select>

1 个答案:

答案 0 :(得分:1)

在您的表中,您需要添加对象的唯一标识符,然后当列表转到您的控制器时,reposiroty将知道更新而非创建。

<input type="hidden" th:field="*{invRows[__${rowStat.index}__].id}"/>