JSP表格中如何通过动态删除按钮传递复合键值实现行删除
解决复合键场景下的删除参数传递问题
1. 修改JSP页面的删除链接
原来的链接仅传递单一ID,现在需要把复合键的两个字段都作为请求参数传入后端:
<table border="1" cellpadding="5" class="table"> <tr> <th>Fecha</th> <th>Actividad</th> </tr> <c:forEach items="${listFechaActividad}" var="fechaActividad"> <tr> <td>${fechaActividad.fecha}</td> <td>${fechaActividad.actividad}</td> <td> <!-- 传递复合键的两个参数 --> <a href="delete?fecha=${fechaActividad.fecha}&actividad=${fechaActividad.actividad}" class="btn btn-danger">Delete</a> </td> </tr> </c:forEach> </table>
通过URL查询字符串同时传递fecha和actividad,后端就能分别获取复合键的两个值。
2. 修改Spring MVC控制器的删除方法
调整控制器方法,添加两个@RequestParam来接收复合键参数,再用这两个值执行删除逻辑:
@RequestMapping("/delete") public String deleteForm(@RequestParam String fecha, @RequestParam String actividad) { // 这里用fecha和actividad作为复合键执行删除操作,例如调用业务层方法 // fechaActividadService.deleteByCompositeKey(fecha, actividad); return "redirect:/"; }
如果fecha是日期类型(比如LocalDate),可以直接指定参数类型,Spring MVC会自动完成转换:@RequestParam LocalDate fecha。
可选:改用POST请求(更安全)
GET请求参数会暴露在URL中,删除操作更推荐用POST方式:
- 前端改为表单提交:
<td> <form action="delete" method="post" style="display: inline;"> <input type="hidden" name="fecha" value="${fechaActividad.fecha}"> <input type="hidden" name="actividad" value="${fechaActividad.actividad}"> <button type="submit" class="btn btn-danger">Delete</button> </form> </td>
- 控制器方法指定接收POST请求:
@PostMapping("/delete") public String deleteForm(@RequestParam String fecha, @RequestParam String actividad) { // 删除逻辑 return "redirect:/"; }
内容的提问来源于stack exchange,提问作者juanpalomo
相关产品推荐
相关产品推荐

