控制器未正确处理路径变量 - Spring 启动
Controller not processing Path Variable correctly - Spring boot
我有一个有一些订单的客户列表,我将它们全部显示在 table 中。
我添加了一个按钮,以便在需要时删除每个订单。
这是我如何显示它们的table。
<table id="customers">
<tr>
<th>Customer</th>
<th>Order</th>
<th>Action</th>
</tr>
<div th:each="customer : ${customers}">
<tr>
<td th:text="${customer.name}" style="font-weight: bold;"></td>
<td></td>
<td></td>
</tr>
<tr th:each="order : ${customer.orders}" >
<td></td>
<td th:text="${order.name}">
<td>
<a th:href="@{/manager/customer/{cid}(cid=${customer.id})/order/{oid}(oid=${order.id})}" class="button">Remove order</a>
</td>
</tr>
</div>
</table>
在我的控制器中class我有处理删除的方法。
@GetMapping("/manager/customer/{cid}/order/{oid}")
public String deleteCustomerOrder(@PathVariable(value="cid") Long cid, @PathVariable(value="oid") Long oid, Model model) {
Customer c = customerService.findCustomerById(cid);
//do stuff
return "/manager/customerOrders";
}
当我尝试删除特定订单时出现以下错误
无法将类型 'java.lang.String' 的值转换为所需类型 'java.lang.Long';嵌套异常是 java.lang.NumberFormatException:对于输入字符串:“{cid}(cid=${customer.id})”
路径如下所示:
http://localhost:8080/manager/customer/%7Bcid%7D(cid=$%7Bcustomer.id%7D)/order/2
我获取 ID 的方式有问题吗?
所有参数应该一起定义。更改 href 如下:
<a th:href="@{/manager/customer/{cid}/order/{oid}(cid=${customer.id}, oid=${order.id})}" class="button">Remove order</a>
请参阅Thimeleaf documantation or in this教程
中的添加参数部分
我有一个有一些订单的客户列表,我将它们全部显示在 table 中。 我添加了一个按钮,以便在需要时删除每个订单。
这是我如何显示它们的table。
<table id="customers">
<tr>
<th>Customer</th>
<th>Order</th>
<th>Action</th>
</tr>
<div th:each="customer : ${customers}">
<tr>
<td th:text="${customer.name}" style="font-weight: bold;"></td>
<td></td>
<td></td>
</tr>
<tr th:each="order : ${customer.orders}" >
<td></td>
<td th:text="${order.name}">
<td>
<a th:href="@{/manager/customer/{cid}(cid=${customer.id})/order/{oid}(oid=${order.id})}" class="button">Remove order</a>
</td>
</tr>
</div>
</table>
在我的控制器中class我有处理删除的方法。
@GetMapping("/manager/customer/{cid}/order/{oid}")
public String deleteCustomerOrder(@PathVariable(value="cid") Long cid, @PathVariable(value="oid") Long oid, Model model) {
Customer c = customerService.findCustomerById(cid);
//do stuff
return "/manager/customerOrders";
}
当我尝试删除特定订单时出现以下错误
无法将类型 'java.lang.String' 的值转换为所需类型 'java.lang.Long';嵌套异常是 java.lang.NumberFormatException:对于输入字符串:“{cid}(cid=${customer.id})”
路径如下所示: http://localhost:8080/manager/customer/%7Bcid%7D(cid=$%7Bcustomer.id%7D)/order/2
我获取 ID 的方式有问题吗?
所有参数应该一起定义。更改 href 如下:
<a th:href="@{/manager/customer/{cid}/order/{oid}(cid=${customer.id}, oid=${order.id})}" class="button">Remove order</a>
请参阅Thimeleaf documantation or in this教程
中的添加参数部分