2

我需要从我的 JSP 转到我的 Servlet,然后再回到同一个 JSP。问题是当我回来时,我所有的文本字段都是空的。

我该如何解决这个问题?笔记:

  1. 表格有method='post' enctype='multipart/form-data'.
  2. 我正在使用按钮提交。它们是执行 javascript 函数 onclick 的普通按钮,该函数验证文本字段,如果一切正常,则调用该submit()函数并提交表单。
  3. 使用以下代码完成从 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);
4

1 回答 1

1

<input>requestin方法中读取数据并将数据doPost推送/绑定<input>到请求范围。

示例.jsp


<form method="post" action="servlet_url">
  No   : <input type="text" name="no" value="${requestScope.no}"/>
  Name : <input type="text" name="name" value="${requestScope.name}"/>
  <input type="submit"/>
</form>

和代码doPost

String no=request.getParameter("no");
String name=request.getParameter("name");

//other statements

request.setAttribute("no",no);
request.setAttribute("name",name);

RequestDispatcher rd = request.getRequestDispatcher("/sample.jsp");
rd.forward(request, response);
于 2012-09-18T02:40:49.553 回答