如何使用路径变量参数将请求中的特定对象值发送到控制器

时间:2017-09-05 21:15:37

标签: java spring-boot thymeleaf

我正在尝试创建控制器,该控制器将负责删除特定显示的用户,方法是通过方法发送他们的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>

不幸的是,“删除/ $ {user.id} .html”请求不起作用。 任何sugestions?

提前谢谢。

1 个答案:

答案 0 :(得分: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)