我需要从我的 JSP 转到我的 Servlet,然后再回到同一个 JSP。问题是当我回来时,我所有的文本字段都是空的。
我该如何解决这个问题?笔记:
- 表格有
method='post' enctype='multipart/form-data'
. - 我正在使用按钮提交。它们是执行 javascript 函数 onclick 的普通按钮,该函数验证文本字段,如果一切正常,则调用该
submit()
函数并提交表单。 使用以下代码完成从 servlet 的返回:
RequestDispatcher rd = request.getRequestDispatcher("/altaPerfil.jsp"); rd.forward(request, response);
附加信息:
我的 JSP 页面与此类似:https ://www.taringa.net/registro 。
它有一个表单,表单内有 7 个文本字段,3 个日期选择字段(与该页面中的完全一样),一个用于上传图像的上传字段,一个带有两个字段和 3 个按钮的单选按钮。
其中一个按钮用于验证昵称和电子邮件字段(如果昵称或邮件已被占用,则返回 false,否则返回 true,这是在 servlet 中完成的,因为我们试图将逻辑与表示分离)。
第二个按钮用于上传图像。
第三个按钮用于发送所有表单(所有文本字段和日期)。
前两个按钮必须转到 servlet 并返回到 JSP...
示例代码:
(JSP)
<form action="altaPerfilServlet"
name = "frmValidar"
method='post' enctype='multipart/form-data' >
Nick:
<br />
<input type="text" name="nick"
id="nick" onkeypress="deshabilita()"
value="${requestScope.nick}" />
<input type=button name="botonValidar"
id="botonValidar" value="Validar datos"
onclick="validarNick()" />
<!--Note: the javascript validarNick() verifies the nick field and if it is -->
<!--not empty then it calls frmValidar.submit()-->
(小服务程序)
FileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
List<FileItem> fields = upload.parseRequest(request);
Iterator<FileItem> it = fields.iterator();
<!--here i process all the FileItems and obtain their values-->
<!--then i talk to a java app (which acts as a server, providing -->
<!--the data and a series of classes) and obtain a boolean value(esValido)-->
<!--that tells me if the nick is available(true) or taken(false)-->
<!--finally: -->
request.setAttribute("esValido", esValido);<!-- saving the boolean -->
String nick=request.getParameter("nick");
request.setAttribute("nick", nick);
RequestDispatcher rd = request.getRequestDispatcher("/altaPerfil.jsp");
rd.forward(request, response);