我需要从我的JSP转到我的Servlet,然后回到同一个JSP。问题是,当我回来时,我的所有文本字段都是空的。
我该如何解决这个问题?注意:
method='post' enctype='multipart/form-data'
。submit()
函数并提交表单。使用此代码完成servlet的回复:
RequestDispatcher rd = request.getRequestDispatcher("/altaPerfil.jsp");
rd.forward(request, response);
其他信息:
我的JSP页面与此类似:https://www.taringa.net/registro。
它有一个表单,表单内有7个文本字段,3个日期选择字段(与该页面完全相同),上传图像的上传字段,带两个字段的radioButton和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()-->
(适用的Servlet)
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);
答案 0 :(得分:1)
在<input>
方法中阅读request
中的doPost
数据,并将<input>
数据推送/绑定到请求范围。
sample.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);