You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 23:55:30