2017-09-05 48 views
0

我試圖創建控制器,它將負責通過在請求中發送它們的ID來刪除特定的顯示用戶,該請求將按方法進行調用並繼續。到目前爲止,我寫了這樣的事情:如何發送請求中的特定對象值到具有路徑變量參數的控制器

@RequestMapping("delete/{user.id}") 
public String deleteUser(@PathVariable("user.id") String userId) 
{ 
    userRepository.delete(Long.parseLong(userId)); 
    return "panel"; 
} 

而且我在顯示所有用戶我thymyleaf模板也創造了一個DINAMIC表。

<tr th:each="user : ${userList}"> 
    <td th:text="${user.firstname}"></td> 
    <td th:text="${user.lastname}"></td> 
    <td th:text="${user.email}"></td> 
    <td th:text="${user.birthdate}"></td> 
    <td th:text="${user.password}"></td> 
    <td><a href="delete/${user.id}.html">Delete</a></td> 
    <td><a href="#">Edit</a></td> 
</tr> 

不幸的是,「delete/$ {user.id} .html」請求不起作用。 任何sugestions?

預先感謝您。

回答

1

你沒有描述你收到的錯誤,如果有的話。我認爲你可能有多個問題。首先從URL中刪除「.html」。意味着請求將不匹配您在RequestMapping註釋中的路徑。

我還建議將userId參數更改爲long。 Spring將負責解析。

public String deleteUser(@PathVariable("user.id") long userId) 

你應該使用指定的預期HTTP方法:

@RequestMapping(method=RequestMethod.GET, path="delete/{user.id}") 

你並不真的需要使用「user.id」作爲路徑參數的名稱。你可以使用「ID」。

@RequestMapping(method=RequestMethod.GET, path="delete/{id}") 
public String deleteUser(@PathVariable("id") long userId) 
+0

感謝您的回覆。我做了這些推薦的更改,但仍然出現如下錯誤。我有** Whitelabel Error Page **和這樣的消息: **有一個意外的錯誤(type = Bad Request,status = 400)。 未能將類型'java.lang.String'的值轉換爲所需類型'java.lang.Long';嵌套異常是java.lang.NumberFormatException:對於輸入字符串:「$ {user」** –

+0

Thymeleaf模板中嵌入的URL格式錯誤。如果將鏈接懸停在瀏覽器中,則會發現該URL包含delete/$ {user.id},而不是刪除/ 1。 – Faron

相關問題