2016-02-03 49 views
0

我正在嘗試創建一個表格,顯示已添加的所有日誌的列表。除了顯示信息之外,我還希望有另一列複選框,單擊這些複選框將允許我使用相應的刪除按鈕刪除它們。如何向Thymeleaf中的表單提交複選標記值列表?

我遇到的問題是我無法將我的複選框中的值放入Long數組中。我也想保持我的表的功能,因爲它顯示正確。

對於我的表,我有以下代碼:

<form method="post" th:action="@{/projects/log/delete/}" th:object="${deleteForm}"> 
    <div th:each="log : ${allLogs}" class="row"> 
    <tbody> 
     <tr class="active"> 
     <td> 
      <input type="checkbox" th:field="*{logIds}" th:value="${log.id}" /> 
     </td> 
     <td th:text="${log.teamUsed}"></td> 
     <td th:text="${log.opponentStarters}"></td> 
     <td th:text="${log.opponentOthers}"></td> 
     <td th:text="${log.myStarters}"></td> 
     <td th:text="${log.myOthers}"></td> 
     <td th:text="${log.result}"></td> 
     </tr> 
    </tbody> 
    </div> 
    <button type="submit" id="deleteButton" class="hidden"></button> 
</form> 

,我試圖將複選框值放入形式爲:(log.id是一個長期的)

public class LogDeleteForm { 

    private List<Long> logIds = new ArrayList<>(); 

    public List<Long> getLogIds() { 
     return logIds; 
    } 

    public void setLogIds(List<Long> logIds) { 
     this.logIds = logIds; 
    } 
} 

在我的控制器我有我的看法如下設置:

@RequestMapping(value = "pokemon_log", method = RequestMethod.GET) 
public String view(Model model) { 
    model.addAttribute("addForm", new logForm()); 
    model.addAttribute("deleteForm", new logDeleteForm()); 
    model.addAttribute("allLogs", logService.getAllLogs()); 
    return "log"; 
} 

我能夠實施刪除罰款我只是無法獲取我想要刪除的Id。我怎樣才能將複選框的值放入多頭列表中?

回答

0

原來我的問題是在我的deleteLogs方法:

@RequestMapping(value = "/log/delete", method = RequestMethod.POST, params = "delete") 
public String deleteLogs(@ModelAttribute("deleteForm") logDeleteForm deleteForm) { 
    List<Long> formIds = deleteForm.getLogIds(); 
    if (formIds == null || formIds.size() == 0) { 
     return "redirect:/projects/log"; 
    } 
    for (Long id : formIds) { 
     logService.deleteLog(id); 
    } 
    return "redirect:/projects/log"; 
} 

我重定向雙雙「重定向:/日誌」,而不是「重定向:/項目/日誌」

而且我的按鈕是缺少名稱=「刪除」,因爲它無法通過刪除參數提交。

相關問題