2017-04-25 67 views
0

我將一個列表與來自我的控制器的對象一起傳遞給我的html,並且thymeleaf爲列表中的每個對象都創建一個列表。spring thymeleaf - 從html表中刪除對象並將id傳遞給控制器​​

我想通過按鈕刪除一個條目,並將對象ID傳遞給我的控制器,以便從數據庫中刪除它。

但是,當我在我的控制器中處理post請求時,id屬性是emtpy。

HTML與Thymeleaf:

<tbody> 
    <tr th:each="user : ${users}"> 
     <td th:text="${user.personId}"></td> 
     <td th:text="${user.firstName}"></td> 
     <td th:text="${user.lastName}"></td> 
     <td> 
      <form th:action="@{delete_user}" method="post" th:object="${user}"> 
       <input type="hidden" th:field="${user.personId}"/> 
       <button type="submit" value="Submit" class="btn btn-danger">Delete</button> 
      </form> 
     </td> 
    </tr> 
</tbody> 

控制器:

@RequestMapping(value = "/delete_user", method = RequestMethod.POST) 
public String handleDeleteUser(@ModelAttribute("user") User user) { 
    System.out.println(user.getPersonId()); 
    System.out.println("test"); 
    return "redirect:/external"; 
} 

我怎樣才能使這項工作? 還是有另一種方式?

謝謝!

回答

2

您可以嘗試將th:action="@{delete_user}"更改爲th:action="@{/delete_user}"。 或者您可以使用路徑變量/查詢字符串並使用get方法傳遞該ID。 例如 HTML:

<a th:href="|@{/delete_user/${user.personId}}|" class="btn btn-danger">Delete</a> 

控制器:

@RequestMapping(value = "/delete_user/{personId}", method = RequestMethod.GET) 
public String handleDeleteUser(@PathVariable String personId) { 
    System.out.println(personId); 
    System.out.println("test"); 
    return "redirect:/external"; 
} 

HTML:

<a th:href="@{/delete_user(personId=${user.personId})}" class="btn btn-danger">Delete</a> 

控制器:

@RequestMapping(value = "/delete_user", method = RequestMethod.GET) 
public String handleDeleteUser(@RequestParam(name="personId")String personId) { 
    System.out.println(personId); 
    System.out.println("test"); 
    return "redirect:/external"; 
} 
+0

用method = GET刪除一個用戶,這是一個很好的做法嗎? – user641887

+0

@ user641887其實,在這裏你不是通過GET方法刪除用戶的,你只是使用GET方法傳遞一個id,刪除操作可能會使用一些POST方法web服務來執行。 –

相關問題