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

Java Servlet JSP页面编辑按钮点击无法跳转带参路由问题

问题核心原因
  • 编辑按钮的实现逻辑错误:你将<input type="submit">嵌套在<a>标签内部,submit控件的默认行为是触发所属表单的POST提交,会直接覆盖<a>标签的href跳转逻辑,点击时不会访问你写的带参GET地址,只会提交外层表单跳转到无参数的ServletPacientes路径。
  • 页面HTML结构非法:你在表格<tr>行标签内部嵌套了未正确闭合的<form>标签,编辑按钮所在单元格位于外层全局搜索表单的范围内,点击submit按钮时直接触发外层表单的POST请求,而你的Servlet未对该POST请求做对应处理,因此返回空白页面。
  • Servlet参数取值不匹配:就算跳转成功,你在editar分支中读取的参数名是dniPaciente,但GET地址里传递的参数名是dni,手动输入URL时也无法正确读取患者ID。
修复方案
  1. 修改编辑按钮实现,移除嵌套在a标签里的submit输入控件,直接给a标签加按钮样式即可:
<td> 
  <a href="ServletPacientes?Param=editar&dni=<%=a.getDni()%>" class="btn btn-warning">Editar</a>
</td>
  1. 修正表格内的HTML结构,修复行内form标签错位问题,删除按钮如果需要走POST提交,需保证form标签完全包裹对应操作的控件,不跨<td>、<tr>标签嵌套。
  2. 修正Servlet中editar分支的参数读取逻辑,参数名和URL传递的键名保持一致:
case "editar":
{
    // 原代码取的是dniPaciente,改为和URL参数匹配的dni
    Paciente p = negPac.obtenerUno(request.getParameter("dni"));
    request.setAttribute("dniPac", p);  
    RequestDispatcher dispatcher = request.getRequestDispatcher("/EditarPaciente.jsp");
    dispatcher.forward(request, response);
    break;
}
  1. 给ServletPacientes补全doPost方法的路由逻辑,避免表单提交时无对应处理返回空白页。

内容的提问来源于stack exchange,提问作者mateo ghidini

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 16:36:39