Javascript request.getParameter()在servlet中返回null
我正在开发一个Java Web应用程序,其中有一个带有表单的JSP。表单中有一个表,显示信息,每行有一个“修改”按钮。按下时,我有一个Javascript脚本,用表单的输入替换表中的标签,用户可以通过单击“接受”按钮填写表单并发送请求 但是,当在servlet中使用request.getParameter()时,它返回None,就好像输入不存在一样。确实创建了输入,执行了post,并调用了servlet中的适当方法,但是当我尝试访问参数时,它们是空的 代码如下: listadoCatLibro.jsp:Javascript request.getParameter()在servlet中返回null,javascript,java,html,jsp,servlets,Javascript,Java,Html,Jsp,Servlets,我正在开发一个Java Web应用程序,其中有一个带有表单的JSP。表单中有一个表,显示信息,每行有一个“修改”按钮。按下时,我有一个Javascript脚本,用表单的输入替换表中的标签,用户可以通过单击“接受”按钮填写表单并发送请求 但是,当在servlet中使用request.getParameter()时,它返回None,就好像输入不存在一样。确实创建了输入,执行了post,并调用了servlet中的适当方法,但是当我尝试访问参数时,它们是空的 代码如下: listadoCatLibro.
<form id="form-mod" action="/libreria-java/admin/listado-cat-libro/modificar" method="post" enctype="text/plain">
<table class="table">
<thead>
<tr>
<th scope="col">ID</th>
<th scope="col">Descripcion</th>
<th scope="col">Estado</th>
<th scope="col"> </th>
<th scope="col"> </th>
</tr>
</thead>
<tbody>
<c:if test="${requestScope.categorias != null }">
<c:forEach var="cat" begin="0" items="${requestScope.categorias}">
<tr id="row-cat-${cat.getId()}">
<th id="id-lbl-${cat.getId()}" scope="row">${cat.getId()}</th>
<td id="des-lbl-${cat.getId()}">${cat.getDesc()}</td>
<td id="est-lbl-${cat.getId()}">${cat.getEstado()}</td>
<td> <button id="mod-btn-${cat.getId()}"
class="btn btn-secondary float-right"
type="button"
onClick="modificar(${cat.getId()})">Modificar</button></td>
<td> <button id="del-btn-${cat.getId()}"
class="btn btn-secondary float-right"
type="button"
onClick="eliminar(${cat.getId()})">Eliminar</button></td>
</tr>
</c:forEach>
</c:if>
</tbody>
</table>
</form>
和ServletAdmin.java
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
try {
if(isAdmin(request)) {
switch (request.getPathInfo()) {
case "/alta-libro":
this.altaLibro(request, response);
response.sendRedirect("/libreria-java/admin/alta-libro");
break;
case "/listado-cat-libro/alta":
this.altaCatLibro(request, response);
response.sendRedirect("/libreria-java/admin/listado-cat-libro");
break;
case "/listado-cat-libro/modificar":
this.modificarCatLibro(request,response);
response.sendRedirect("/libreria-java/admin/listado-cat-libro");
break;
}
} else {
response.sendRedirect("/libreria-java/home");
}
} catch (CustomException e) {
request.getSession().setAttribute("errorMsg", e.getMessage());
request.getRequestDispatcher( "/WEB-INF/pages/error.jsp" ).forward( request, response );
} catch (Exception ex) {
CustomException e = new CustomException("Error desconocido", "ServletAdmin", ex);
request.getSession().setAttribute("errorMsg", e.getMessage());
request.getRequestDispatcher( "/WEB-INF/pages/error.jsp" ).forward( request, response );
}
}
private void modificarCatLibro(HttpServletRequest req, HttpServletResponse res) {
CtrlCategoria ctrl = new CtrlCategoria();
Categoria c = new Categoria();
System.out.println(req.getParameter("inputID"));
System.out.println(req.getParameter("inputDesc"));
System.out.println(req.getParameter("inputEstado"));
c.setId(Integer.parseInt(req.getParameter("inputID")));
c.setDesc(req.getParameter("inputDesc"));
c.setEstado(req.getParameter("inputEstado"));
ctrl.update(c);
}
}
感谢您提供的任何帮助,并为冗长而混乱的代码感到抱歉。我不想编辑太多内容,以防我不小心遗漏了导致问题的任何内容。编辑-我发现了问题。问题在于JSP文件中表单的声明。这一行:
<form id="form-mod" action="/libreria-java/admin/listado-cat-libro/modificar" method="post" enctype="text/plain">
应该是:
<form id="form-mod" action="/libreria-java/admin/listado-cat-libro/modificar" method="post">
“enctype=“text/plain”是导致问题的原因
<form id="form-mod" action="/libreria-java/admin/listado-cat-libro/modificar" method="post">