我正在使用this tutorial 我看到每行的删除功能:
7.6动态字段
感谢Spring MVC中的高级表单字段绑定功能, 我们可以使用复杂的Spring EL表达式绑定动态表单字段 我们的形式支持bean。这将允许我们创建新的Row对象 在我们的SeedStarter bean中,并将这些行的字段添加到我们的表单中 用户请求。
为了做到这一点,我们需要一些新的映射方法 我们的控制器,它将从我们的SeedStarter中添加或删除一行 取决于具体请求参数的存在:
@RequestMapping(value="/seedstartermng", params={"addRow"}) public String addRow(final SeedStarter seedStarter, final BindingResult bindingResult) { seedStarter.getRows().add(new Row()); return "seedstartermng"; } @RequestMapping(value="/seedstartermng", params={"removeRow"}) public String removeRow( final SeedStarter seedStarter, final BindingResult bindingResult, final HttpServletRequest req) { final Integer rowId = Integer.valueOf(req.getParameter("removeRow")); seedStarter.getRows().remove(rowId.intValue()); return "seedstartermng"; }
现在我们可以在表单中添加动态表:
<table> <thead> <tr> <th th:text="#{seedstarter.rows.head.rownum}">Row</th> <th th:text="#{seedstarter.rows.head.variety}">Variety</th> <th th:text="#{seedstarter.rows.head.seedsPerCell}">Seeds per cell</th> <th> <button type="submit" name="addRow" th:text="#{seedstarter.row.add}">Add row</button> </th> </tr> </thead> <tbody> <tr th:each="row,rowStat : *{rows}"> <td th:text="${rowStat.count}">1</td> <td> <select th:field="*{rows[__${rowStat.index}__].variety}"> <option th:each="var : ${allVarieties}" th:value="${var.id}" th:text="${var.name}">Thymus Thymi</option> </select> </td> <td> <input type="text" th:field="*{rows[__${rowStat.index}__].seedsPerCell}" /> </td> <td> <button type="submit" name="removeRow" th:value="${rowStat.index}" th:text="#{seedstarter.row.remove}">Remove row</button> </td> </tr> </tbody> </table>
在这里可以看到很多东西,但我们不应该这么做 现在明白......除了一件奇怪的事情:
现在我没有实现编辑功能。
想法?