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。
修复方案
- 修改编辑按钮实现,移除嵌套在a标签里的submit输入控件,直接给a标签加按钮样式即可:
<td> <a href="ServletPacientes?Param=editar&dni=<%=a.getDni()%>" class="btn btn-warning">Editar</a> </td>
- 修正表格内的HTML结构,修复行内form标签错位问题,删除按钮如果需要走POST提交,需保证form标签完全包裹对应操作的控件,不跨
<td>、<tr>标签嵌套。 - 修正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; }
- 给
ServletPacientes补全doPost方法的路由逻辑,避免表单提交时无对应处理返回空白页。
内容的提问来源于stack exchange,提问作者mateo ghidini
相关产品推荐
相关产品推荐

